首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Ask Apple 2022 与 SwiftUI 有关的问答(上)

使用 environmentObject 的情况下,如何避免创建实例的视图被重新计算Q:如何在避免重新计算顶层视图 body 的情况下,在不同子树的两个子视图之间共享状态( 例如 ObservableObject...是否有其他方法可以直接根据状态的变化对视图进行动画处理而不使用 onChange 修饰?我的代码是这样的。....阅读 SwiftUI 的动画机制[8] 一文,了解更多有关动画的内容。自适应高度 SheetQ:如何在 iOS16 呈现与动态内容高度相匹配的 Sheet?...image-20221022135326560San Francisco 宽度风格Q:如何在 SwiftUI 如何使用 SF 字体家族新增的三种宽度风格( Compressed、Condensed、Expanded...我知道 @State 应该是一个内部,但在某些情况下,我们需要从外部传入一个,这对于 onAppear 似乎并不可行。下面的方法由于某种原因并不总是有效。

12.2K20

Swift 周报 第十七期

针对如何将最新技术集成到您的 App 、设计直观的 UI,以及测试最新软件等主题大胆提问。 活动将于 11 月 14 日至 18 日举行,届时将提供多种语言和多个时区的在线一对一咨询和小组 Q&A。...多种智能的共享方式,共享照片图库可以根据开始日期或照片中的人物,选取想要囊括的内容来进行设置。完成后,你可以手动分享,也可以看看边栏里新的“为共享图库推荐”,根据它的智能建议将照片添加进来。...摘要: 在 iOS 16 引入的 SwiftUI 图表,可以以直观的视觉格式呈现数据,并且可以使用 SwiftUI 图表快速创建。...在 Swift 图表中使用 Foudation 库的测量类型 摘要: 本篇文章使用今年推出的新的 Swift Charts 框架,实现如何绘制默认不符合 Plottable 协议的类型的数据。...如何在 SwiftUI 创建条形图 摘要: 本文将展示如何创建一个垂直条形图,其中矩形的高度将代表每个类别的

2K10
您找到你想要的搜索结果了吗?
是的
没有找到

Ask Apple 2022 与 Core Data 有关的问答 (下)

详细内容请参阅 如何在 Core Data 中使用 Derived 和 Transient 属性[4] 一文。...私有上下文Q:如何配置 Core Data Stack,以便在后台保存更改时,用户可以继续使用应用程序。...例如,什么情况下应该使用手动?我也不确定 Category/Extension 的作用以及如何在它和 Class 之间进行选择?...当生成文件后,需要将 Entity 切换成 Manual /None 模式,否则 Xcode 会出现类型重复声明的错误( Xcode 还会有另一份 Entity 定义保存在项目内部 ),如果仍无法编译...如何在 CloudKit 管理与设备之间同步这些更改?谢谢!A:尚不清楚此工作流程是否会向 NSPersistentCloudKitContainer 生成推送通知。

3.2K20

Ask Apple 2022 与 SwiftUI 有关的问答(下)

SwiftUI 布局 —— 尺寸( 上 )[8] 一文,对建议尺寸的几种模式都进行了介绍。如何减少主线程的负担Q:如何避免所有操作都被放置在主线上?...Swiftcord[12] 的代码展示了如何在 SwiftUI 下实现倒置列表。阅读 优化在 SwiftUI List 显示大数据集的响应效率[13] 一文,了解苹果工程师推荐的方法。...阅读 SwiftUI TextField 进阶 —— 格式与校验[14] 一文了解其他的验证手段,以及如何通过 onChange 实现近乎实时地限制输入字符的方法。...macOS APIQ:对于运行 Monterey 的 Mac,能否如何在 SwiftUI 实现下面需求的建议:打开一个窗口在该窗口中初始化数据找到所有打开的窗口确定一个窗口是否打开从不在该窗口的视图中关闭一个窗口...就可以从 URL 异步加载图片,也可以根据需要实现自己的异步加载完成异步加载。

14.7K30

如何判断 ScrollView、List 是否正在滚动

本文将介绍几种在 SwiftUI 获取当前滚动状态的方法,每种方法都有各自的优势和局限性。...目前 SwiftUI内部的实现上去 UIKit( AppKit )化很明显,比如,本节介绍的方法在 SwiftUI 4.0 已经失效方法二:Runloop我第一次接触 Runloop 是在学习 Combine...该方案的表现并不理想屏幕只能有一个可滚动控件由于任意可滚动控件滚动时,都会导致主线程的 Runloop 切换至 tracing 模式,因此无法有效地区分滚动是由那个控件造成的方法三:PreferenceKey...在 SwiftUI ,子视图可以通过 preference 视图修饰向其祖先视图传递信息( PreferenceKey )。...preference 与 onChange 的调用时机非常类似,只有在发生改变后才会传递数据。在 ScrollView、List 发生滚动时,它们内部的子视图的位置也将发生改变。

3.7K40

在 Text 实现基于关键字的搜索和定位

range 以及在搜索结果的序号( 位置 )。...ForEach 形式 )的 View 添加显式标识符后( 使用 id 修饰),在视图刷新时,List 将会为 ForEach 的所有视图创建实例( 并非渲染 )用以比对视图类型的构造参数是否发生变化...请阅读 优化在 SwiftUI List 显示大数据集的响应效率[6] 以及 避免 SwiftUI 视图的重复计算[7] 两篇文章,了解更多有关性能优化方面的内容通过 currentPostion 获取需要滚动到的...减少不必要的滚动考虑到使用者的阅读感受,我希望如果当前定位的 transcription 的结果已经为高亮显示( 当前选择的高亮位置 ),且下一个序号位置仍在同一个 transcription ...视图中打开 URL 的若干方法[10] 一文,了解更多有关 OpenURLAction 的内容创建体验感优秀的搜索条使用 safeAreaInset 添加搜索栏在没有 safeAreaInset 修饰的时候

4.2K30

Swift 周报 第四十二期

诸如绑定、通配符、元组、枚举、可选展开、布尔、动态转换和表达式模式之类的模式将根据其所有权行为进行评估。 确定模式匹配所有权:探索确定模式匹配的所有权行为的方法。...条件的所有权控制:考虑“if let”和“if case”构造借用和 inout 模式绑定的含义。这些新的绑定形式可用于可选展开,并且其行为类似于根据其所有权要求切换主题。...总体而言,我们的目标是在 Swift 引入更细致的模式匹配,允许在不消耗的情况下进行借用和变异,并探索这些增强功能在各种语言结构( switch 语句和条件)的含义。...SwiftUI 的作用域动画[10] 摘要: 文章介绍了在 SwiftUI使用作用域动画的新方法。首先,我们回顾了以前在 SwiftUI 处理动画的方式,并指出了其中的一些缺点。...随后,我们展示了如何使用带有 value 参数的 animation 视图修饰符来限定动画范围,以及如何处理多个可动画属性的情况。

20510

探讨 SwiftUI 的几个关键属性包装

在这篇文章,我们将探讨几个在 SwiftUI 开发中经常使用且至关重要的属性包装。本文旨在提供对这些属性包装的主要功能和使用注意事项的概述,而非详尽的使用指南。...@State @State 是 SwiftUI 中最常用的属性包装之一,主要用于在视图内部管理私有数据。它特别适合存储类型数据,字符串、整数、枚举或结构体实例。...如果数据不需要复杂的跨视图共享,使用 @State 可以简化状态管理。 注意事项 尽量仅在视图的内部使用 @State,即使未显式标记为 private,也应当将其视为视图的私有属性。...详见 避免 SwiftUI 视图的重复计算[7]。 如果不需要在当前视图或在子视图中(通过 @Binding )修改,无需使用 @State。...在 iOS 17+ 的环境,如果应用主要依赖于 Observation 和 SwiftData 框架,那么这三个属性包装使用频率可能会相对较低。

19210

SwiftUI使用 @EnvironmentObject 从环境读取自定义

SwiftUI的环境使我们可以使用来自外部的,这对于读取Core Data上下文或视图的展示模式等很有用。...您已经了解了如何使用@State处理单个视图的局部状态,以及@ObservedObject如何使我们在视图之间传递一个对象,以便我们可以共享它。...在向您展示一些代码之前,还有最后一件事:环境对象使用您已经学过的ObservableObject协议,SwiftUI将自动确保共享同一环境对象的所有视图在更改时都会更新。...现在,您可能想知道SwiftUI如何在.environmentObject(user)和@EnvironmentObject var user: User之间建立连接——如何知道将该对象放入正确的属性?...好吧,您已经了解到字典如何让我们使用一种类型作为键key,而另一种类型作为。环境有效地使我们可以将数据类型本身用作键,并将类型的实例用作

9.5K20

SwiftUI使用UIKit视图

SwiftUI使用UIKit视图 想获得更好的阅读体验可以访问我的博客www.fatbobman.com,或点击下方的阅读原文 已迈入第三个年头的SwiftUI相较诞生初始已经提供了更多的原生功能...本文将通过对UITextField的包装来讲解以下几点: •如何在SwiftUI使用UIKit视图•如何让你的UIKit包装视图具有SwiftUI风格•在SwiftUI使用UIKit视图需要注意的地方...SwiftUI的视图,本身没有清晰(可适当描述)的生命周期,它们是、是声明。SwiftUI提供了几个修改(modifier)来实现类似UIKit钩子方法的行为。...、transaction(如何处理状态更新,动画模式)以及environment(当前视图的环境集合)。...在实际使用,可根据实际需求选择适当的方案。

8.1K20

Xcode 11 初体验

Editor Only:只显示代码编辑。 Editor and Canvas:代码编辑SwiftUI预览视图。 Editor and Assistant:代码编辑和辅助视图。...Resolving 三方框架 设计工具(Design Tools) 可以随时查看各设备上的效果以及作出更改。 在开发和调试时,随时在暗黑和明亮模式之间进行切换。...可以方便的使用浏览所有SF符号 在苹果内部还是提供了很多方便的,比如下图,你可以根据关键字搜索出你需要的图标 同时你放到相应的界面上面,你还可以进行调整!...Debug 工具升级 Xcode 11 ,对模拟调试做了很多加强。...你现在可以点击调试配置界面,动态改变模拟的运行参数,比如这里改变主题模式到黑色,改变文字大小,更改辅助选项等等: 这样增强我们开发人员的调试能力,对于每次编码再调整的方式大大优化!

3.1K10

AVKit框架详细解析(四) —— 基于AVKit 和 AVFoundation框架的视频流App的构建

AVPlayerLayer } 为了能够在 SwiftUI使用此视图,您需要使用 UIViewRepresentable 创建一个包装。...2) 您使用初始设定项创建 LoopingPlayerUIView 的新实例并返回新实例。 3) SwiftUI 在需要更新底层 UIView 时会调用此方法。 现在,将其留空。...2) 双击时在 1x 和 2x 速度之间切换。 您将从完成这些事情所需的实际方法开始。 首先,您需要在 LoopingPlayerUIView 公开一些可以直接访问播放的方法。...2) 当有人双击播放视图时,您可以添加一个侦听。 这会在 2x 和 1x的播放速率之间切换。 3) 当有人单击播放视图时,您可以添加一个侦听。 这会切换视频的静音状态。...如果你想使用画中画,你需要使用 AVPlayerViewController,它属于 UIKit。 好处是你知道如何在 SwiftUI 和 UIKit 之间建立桥梁。

6.9K10

如何在Xcode下预览含有Core Data元素的SwiftUI视图

如何在Xcode下预览含有Core Data元素的SwiftUI视图 从SwiftUI诞生之日起,预览(Canvas Preview )一直是个让开发者又爱又恨的功能。...结合两年来我在SwiftUI使用Core Data的经验和教训,我们将在本文中探讨: •导致SwiftUI预览崩溃的部分原因•如何在之后的开发避免类似的崩溃出现•如何在Xcode安全可靠地预览含有...预览在Xcode的工作原理同标准的模拟十分接近。但为了让它可以即时响应SwiftUI视图的变化,苹果对其做出了不少的修改。...环境注入 SwiftUI提供了多种途径在视图之间传递数据。其中通过环境(EnvironmentValue)或环境对象(EnvironmentObject)传递数据是其中使用量较大的两种方式。...SwiftUI提供的managedObjectContext环境为在视图中使用或操作Core Data元素提供了基础和便利。

5.1K10

SwiftUI数据流之State&Binding

@State是一个属性包装(property wrapper),被设计用来针对类型进行状态管理;用于在Structmutable类型 struct User { var firstName...现在如果改为class,我们有了一个类,这种行为就不再发生,Swift可以直接修改。 还记得我们如何使用mutating关键字来修改结构方法的属性吗?...通常使用场景是把当前View的@State类型传递给其子View,如果直接传递@State类型,将会把类型复制一份copy,那么如果子View类型的某个属性进行修改,父View不会得到变化...@Binding 修饰属性无需有初始化,Binding可以配合@State或ObservableObject对象属性一起使用,注意不是@ObservedObject属性包装 struct Product...,会修改外层的单一数据源(single source of truth),所以列表展示的内容会不断根据条件进行过滤 可变和不可变 首先来使用下面示例探讨一个问题 struct StateMutableView

4K30

爬虫学习(三)

爬取百度贴吧的时候,发现他的数据藏在了HTML页面的注释,是根据js解析出来的。如果遇到诸如此类的网站,数据是根据js修改后加载的。我们只需要提供一个不支持js的浏览版本即可。...4.1爬虫、反爬与反反爬 4.1.1 明确反反爬的主要思路 反反爬的主要思路就是:尽可能的去模拟浏览,浏览如何操作,代码中就如何去实现。...根据标签页句柄列表索引下标进行切换 driver.switch_to.window(current_windows[0]) switch_to切换frame标签: iframe是html中常用的一种技术...iframe login_frame = driver.find_element_by_id('login_frame') # 切换内部页面 driver.switch_to.frame(login_frame...b.简化模拟登陆,直接使用浏览加载js。 2.如何使用: a.导入selenium相关的模块。 b.创建浏览驱动对象。 c.使用驱动对象进行相关操作。 d.退出。

5.7K30

SwiftUI 之 HStack 和 VStack 的切换

相反,让我们像 SwiftUI 一样,对这些属性参数化,同时设定框架所使用的默认 — 就像这样: struct DynamicStack: View { var...然而,就像上面的代码展示的那样,使用 GeometeryReader 来展示动态切换有一个相当明显的缺点,在几何图形阅读总是会填充水平和垂直方向的所有可用空间(以便测量实际空间)。...使用布局协议 虽然我们最后已经用了非常棒的解决方案,可以在所有支持 SwiftUI 的 iOS 版本中使用,但也让我们来探索一下在 iOS 16 引入的一些新的布局工具(在写这篇文章时,它作为...Xcode 14 的一部分仍在测试阶段) 其中一个工具是新的 Layout 协议,它既能让我们创建完整的自定义布局,直接集成到 SwiftUI 的布局系统,同时也提供给我们一种更丝滑更动画的方式在各种布局之间动态切换...这样做会令动画更流畅,例如在切换设备方向时,我们也有可能在执行此类更改时获得小幅的性能提升(因为 SwiftUI 总是在其视图层次结构为静态时尽可能表现最佳) 选择合适的视图 但我们还没有结束,因为

2.8K10

掌握 Transaction,实现 SwiftUI 动画的精准控制

本文将通过探讨 Transaction 的原理、作用、创建和分发逻辑等内容,告诉读者如何在 SwiftUI 实现更加精准的动画控制,以及需要注意的其他问题。...与环境有些类似,SwiftUI 会在视图层次结构隐式向下传播 transaction。...使用与特定关联的 .animation 修饰版本,就可以避免动画的异常问题了吗? 并不是。 在最初的版本SwiftUI 只提供了一个版本的 .animation。...使用显式动画屏蔽系统组件动画 在 iOS 17 SwiftUI 会让大多数系统组件( Sheet、FullScreeCover、NavigationStack、Inspector 等)在实现动画时...开发者终于可以用纯 SwiftUI 的方式来决定是否在这些组件的切换过程中使用动画了。

44220

使用 SwiftUI 创建一个灵活的选择

使用 UIKit 时,我总是将这种类型的视图实现为具有特定 UICollectionViewFlowLayout 的 UICollectionView。但在 SwiftUI 如何实现呢?...接下来,创建了用于计算特定字符串的宽度和高度的字符串扩展。由于我的实现允许更改字体大小和权重,因此先前提到的两个扩展都以由灵活选择器使用的 UIFont 作为参数。...VStack 的高度是根据两个计算的: 输入数据任何项目的高度(类似于宽度的计算,通过使用 reduce 函数,总结与项目相关的所有高度) 将显示在 VStack 的行数 private func...现在 FlexiblePicker 已经完成,可以使用了! 总结 这篇文章介绍了如何使用 SwiftUI 构建一个灵活的选择(FlexiblePicker),用于选择多个选项。...然后,详细介绍了实现该选择的逻辑,包括如何处理选项的布局、宽度和高度,以及如何处理用户与按钮的交互。 最后,提供了一个简单的视图实现,可以在 SwiftUI使用该选择

24720

老人新兵 —— 一款 iOS APP 的开发手记

SwiftUI、Combine 以及 Core Data 的新特性对我很有吸引力兴趣驱动,没有商业压力和历史包袱,因此可直接采用尚未成熟或前景不明的技术在经过一番了解后,最终选择 SwiftUI +...有以下几个难点:SwiftUI 功能十分有限在真正要实现诸多功能时发现,目前很多场景下仍然要通过 UIKit 才能完成,为此又耗费了些心力学习了点 UIKit 的内容( 至少需要掌握两者之间如何混合使用...模拟 NavigationLink 只能使用一次,第二次点会失效,实机没有问题。很难实现直接返回到根视图,通过 dissmiss 只能返回到上层视图。...最后使用 UITextView 解决。如果 TextField 在 ScrollView ,当在不同的 Segment Picker 中切换时,使用系统自带中文输入会闪退。...Form如果 Form 中使用 if 根据条件动态显示的话,会有灵异事件。同样代码,有时可以正常编译,有时不能。

2.5K40
领券