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

WWDC 23 之后的 SwiftUI 有哪些新功能

前言 WWDC 23 已经到来,SwiftUI 框架中有很多改变和新增的功能。本文中将主要介绍 SwiftUI 数据流、动画、ScrollView、搜索、新手势等功能的新变化。...之前的 SwiftUI 框架版本,应该使用 @ObservedObject 属性包装器来订阅更改。现在不需要了,因为 SwiftUI 视图会自动跟踪符合 Observable 协议的类型的更改。...动画 动画始终是 SwiftUI 框架中最重要的部分。 SwiftUI 轻松实现任何动画,但之前的框架版本缺少一些现在具有的功能。...每当用户滚动视图,它会通过设置第一个可见视图的标识来更新绑定。...rotationEffect(angle) .gesture(rotation) } } 新增的小功能 增加了全新的 ContentUnavailableView 类型,当需要显示空视图可以使用它

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

SwiftUI动画机制

SwiftUI ,我们不能命令某个视图从一个位置移动到另一个位置,为了实现上述效果,我们需要声明该视图状态 A 所处的位置以及状态 B 所处的位置,当由状态由 A 转到 B SwiftUI...本例,使用 withAnimation 也可以达到同样的效果,通过 withAnimation 的闭包修改特定的依赖项从而实现单独的动画控制。...但我们可以自己代码利用它来设置临时状态。...自定义转场 SwiftUI 实现自定义转场并不困难,除非需要创建炫酷的视觉效果,大多数情况下都可以通过使用 SwiftUI 已提供的可动画部件组合而成。...有关显性标识方面的内容可以参阅 优化 SwiftUI List 显示大数据集的响应效率[8] 一文 遗憾与展望 理论上,一旦你掌握了 SwiftUI动画机制,就应该能轻松地驾驭代码,自由地控制动画

14.6K40

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

Swiftcord[12] 的代码展示了如何在 SwiftUI 下实现倒置列表。阅读 优化 SwiftUI List 显示大数据集的响应效率[13] 一文,了解苹果工程师推荐的方法。... SwiftUI 4 ,可以使用 .scrollContentBackground(.hidden) 隐藏列表的默认背景searchableQ:是否有办法.searchable() 修饰器以编程方式设置搜索字段的焦点...将背景扩展到安全区域Q:如果我有一个自定义的容器类型,可以接受一个顶部和底部的视图,是否有办法让 API 的调用者将所提供的视图的背景扩展到安全区域内,同时将内容( 文本或按钮 )保留在安全区域内?...连锁动画Q: SwiftUI ,如何实现连锁动画?例如,我想先给一个视图做动画,当动画完成后立即启动另一个动画。A:不幸的是,目前不可能实现连锁动画。...Too complex to type checkQ:我 iOS 14 SwiftUI 遇到一个问题,我试图有条件地显示 3 个符合 Shape 协议的对象的一个。

14.7K30

SheetKit——SwiftUI模态视图扩展库

主要因为SwiftUI重要的视图展示模式:NavigationView、Sheet等都没有迅捷、简便的重置能力。很难通过一两句代码将应用程序立即设置成我们想要的视图状态。...请参阅我之前的文章——SwiftUI,根据需求弹出不同的Sheet[3]。•新的半高模态视图WWDC 2021,苹果为大家带来了期待已久的半高模态视图。...更多信息请参阅如何在SwiftUI实现interactiveDismissDisabled[5] SheetKit的interactiveDismissDisabled为了兼容bottomSheet...SwiftUI3.0,已经可以使用原生API生成各种毛玻璃效果了。但只有将模态视图的背景设置为透明,毛玻璃效果才能显现出来。.../posts/swiftui-multiSheet/ [4] 源地址: https://github.com/fatbobman/SheetKit.git [5] 如何在SwiftUI实现interactiveDismissDisabled

2.9K20

SwiftUI 4.0 的全新导航系统

iPhone 这类设备,NavigationSplitView 会自动进行单栏适配。但是无论是切换动画、编程式 API 接口等多方面都与 NavigationStack 明显不同。...navigationBar) } RocketSim_Screenshot_iPhone_13_Pro_Max_2022-06-12_09.12.01 NavigationStack 的 toolbar 背景色只有视图上滚才会显示... toolbar 的设置,通过 placement 可以设置适用的对象 隐藏 toolbar NavigationStack { ContentView() .toolbar...browser iPad 下,当前视图的 Title 将显示左侧 image-20220612190914949 editor 不显示返回按钮旁边的上页视图 Title image-20220612191040190...相当一部分开发者由于版本适配的原因并不会使用新的 API ,因此,每个人都需要认真考虑如下问题: 如何从新 API 获得灵感 如何在老版本运用编程式导航思想 如何让新老版本的程序都能享受系统提供的便利

10.2K62

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

另外,按照这种方法,@FocusState 变量会变得没有反应,而且它不能被设置为 nil( 返回到以前的视图并没有移除键盘 )。是否可以SwiftUI 完成( 不使用 UIKit )?...锁定 Charts 纵轴刻度Q:我有一个 Swift 图表,通过监听拖动事件实现在拖动过程显示一个 RuleMark。拖动过程,Y 轴的刻度会变大。...model.state 的任何变动都将引起动画。通过使用与某个特定状态绑定的 animation 修饰器( 老版本的 animation 修饰器已被软弃用 ),可以实现更加精确的动画效果。...阅读 SwiftUI动画机制[8] 一文,了解更多有关动画的内容。自适应高度 SheetQ:如何在 iOS16 呈现与动态内容高度相匹配的 Sheet?...1 : 0.5) 代替 if value < 10 {} else {}@State 的初始化Q:启动设置 @State var 值的正确方法是什么?

12.2K20

优化 SwiftUI List 显示大数据集的响应效率

也就是当显示主界面菜单,列表视图已经完成了实例的创建(可以通过 ListEachRowHasID 的构造函数添加打印命令得以证明),因此也不应是实例化列表视图导致的延迟。... SwiftUI 视图的生命周期研究[3] 一文,我对 List 如何对子视图的显示进行优化做了一定的介绍。... SwiftUI 为视图设置显式标识目前有两种方式: ForEach 的构造方法中指定 由于 ForEach 的视图数量是动态的且是在运行时生成的,因此需要在 ForEach 的构造方法中指定可用来标识子视图的...当仅通过 ForEach 来指定显示标识,List 会对这些视图的显示进行优化,仅在需要显示才会对其进行实例化。...新的问题 细心的朋友应该可以注意到,运行解决方案一的代码后,第一次点击 bottom 按钮,大概率会出现延迟情况(并不会立即开始滚动)。

9.1K20

SwiftUI 中用 zIndex 调整视图显示顺序

本文将对 SwiftUI 的 zIndex 修饰符做以介绍,包括:使用方法、zIndex 的作用域、通过 zIndex 避免动画异常、为什么 zIndex 需要设置稳定的值以及多种布局容器内使用 zIndex...访问我的博客 www.fatbobman.com[1] 可以获得更好的阅读体验 zIndex 修饰符 SwiftUI ,开发者使用 zIndex 修饰符来控制重叠视图间的显示顺序,具有较大 zIndex...如果视图的 zIndex 值相同(比如全部使用默认值 0 ),SwiftUI 会按照布局容器的布局方向( 视图代码闭包的出现顺序 )对视图进行绘制。...视图没有增减变化的需求,可以不必显式设置 zIndex 。...由于 zIndex 是不可动画的,所以应尽量为视图设置稳定的 zIndex 值。

1.7K30

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

本文将通过探讨 Transaction 的原理、作用、创建和分发逻辑等内容,告诉读者如何在 SwiftUI 实现更加精准的动画控制,以及需要注意的其他问题。...使用显式动画屏蔽系统组件动画 iOS 17 SwiftUI 会让大多数系统组件( Sheet、FullScreeCover、NavigationStack、Inspector 等)实现动画...支持设置 Transaction 或 Animation 的组件 SwiftUI ,一些组件或类型允许开发者为其设置 transaction 或 animation,例如:Binding、FetchRequest...开发者应根据需要选择是否采用其内置的动画设置。 例如,对于 FetchRequest,我们可以通过三种方式来控制其在数据增加或删除是否采用动画效果。...使用“显式动画,通过局部声明“隐式动画”来避免部分视图出现动画异常。 需要的情况下,可以通过 TransactionKey 提供更丰富的上下文信息 尽量不在一次状态改变修改过多的属性。

44120

WWDC 23 ,SwiftUI 5 和 SwiftData 的初印象

WWDC 2023 正在如火荼地进行。苹果不仅带来了全新形态的硬件产品,还推出了几个相当震撼的新框架。本文将聊聊我对本届 WWDC SwiftUI 5.0 和 SwiftData 的初步印象。...革命性的动画和视觉效果升级 SwiftUI 原本欠缺一些高级的动画和视觉功能在本次升级中一并被补上了,而且苹果大幅更新了动画、转场、Shape、效果等方面的内部实现。...总之,当前制约动画或视觉效果的将不再是 SwiftUI 的能力,而是开发者的创意。...,直接定位到滚动视图的特定位置,只能使用一次 )、全新的滚动条控制( 闪烁 )、可自定义行视图滚动区域的顶端和显示区域的显示状态( 例如可用其实现类似 watchOS 的滚动到顶端子视图缩小的视觉效果...开心还是无奈 今年的 WWDC ,苹果为 SwiftUI 带来了非常大的变革,并推出了开发者向往已久的 SwiftData。

1.1K20

WWDC 23 ,SwiftUI 5 和 SwiftData 的初印象

WWDC 2023 正在如火荼地进行。苹果不仅带来了全新形态的硬件产品,还推出了几个相当震撼的新框架。本文将聊聊我对本届 WWDC SwiftUI 5.0 和 SwiftData 的初步印象。...革命性的动画和视觉效果升级 SwiftUI 原本欠缺一些高级的动画和视觉功能在本次升级中一并被补上了,而且苹果大幅更新了动画、转场、Shape、效果等方面的内部实现。...总之,当前制约动画或视觉效果的将不再是 SwiftUI 的能力,而是开发者的创意。...,直接定位到滚动视图的特定位置,只能使用一次 )、全新的滚动条控制( 闪烁 )、可自定义行视图滚动区域的顶端和显示区域的显示状态( 例如可用其实现类似 watchOS 的滚动到顶端子视图缩小的视觉效果...开心还是无奈 今年的 WWDC ,苹果为 SwiftUI 带来了非常大的变革,并推出了开发者向往已久的 SwiftData。

35010

SwiftUI:视图的显示和隐藏动画

SwiftUI最强大的功能之一是能够自定义视图的显示和隐藏方式。以前,您已经了解了如何使用常规if条件有条件地包含视图,这意味着当条件更改时,我们可以从视图层次结构插入或移除视图。...“true”和“false”之间切换: self.isShowingRed.toggle() 如果你运行程序,你会看到按下按钮显示或者隐藏红色方块。...:当按钮腾出空间,矩形会放大,当再次点击,矩形会缩小。...(PS: 直接在Canvas运行效果可能有差别,所以还是模拟器或者真机运行查看实际效果吧) 如果你想尝试的话,你可以尝试一些其他的转换。...一个有用的方法是不对称,它允许我们显示视图使用一个转换,视图消失时使用另一个转换。

4.4K30

【visionOS】从零开始创建第一个visionOS程序

点击并拖动应用程序内容下方的窗口栏,以重新定位窗口环境的位置。将指针移动到窗口栏旁边的圆圈上,显示窗口的关闭按钮。将光标移动到窗口的一个角落,以将窗口栏变为调整大小控件。...当你准备界面显示3D内容,使用RealityView。这个SwiftUI视图作为你的RealityKit内容的容器,并允许你使用熟悉的SwiftUI技术更新内容。...要创建一个volume,添加一个WindowGroup场景到你的应用程序,并将其样式设置为volumetric。这个样式告诉SwiftUI为3D内容创建一个窗口。包含您想要的任何2D或3D视图。...系统显示时间设置每个窗口和音量的初始位置。系统还增加了一个窗口条,允许用户重新定位窗口或调整窗口大小。...有关更多信息,请参阅,您的应用程序创建完全沉浸式体验。 请记住设置ImmersiveSpace中放置的项目的位置。

70640

SwiftUI 的方式进行布局

在上面的代码,由于两个视图使用了同样的动画曲线设定,因此,移动并不会出现分离的情况。...我们第一个 overlay 绘制了一个与视图二尺寸一致的视图( 不显示 ),并将其底边与屏幕底边对齐。...五、LayoutPriority SwiftUI 设置视图优先级( 使用 layoutPriority )是一个好用但并不常用的功能。...七、Transition 通过为视图设定 Transition( 转场 ),视图插入或将其移出视图树SwiftUI 将自动生成对应的动画效果。...有关转场动画的更多内容,请参阅 SwiftUI动画机制[8] 一文 八、Layout 协议 4.0 版本SwiftUI 增加了 Layout 协议,通过该协议,开发者可以针对特定的场景,创建自定义布局容器

3.2K00

我庆幸果断放弃了SwiftUI:它还不够成熟

但每当 SwiftUI 更新检查器视图(这种更新可能出现在移动过程,甚至是输入文本字段的时候),渲染速率都会下降到每秒 10 到 15 帧,而且相当不稳定。这显然让人无法容忍。...但这会导致检查器的值出现延迟,因此地图编辑器的交互过程(比如使用移动工具)结果不准确,所以效果还是称不上完美。 但我觉得这可能只是个独立问题,并不能因此把 SwiftUI 一棒子打死。...它的显示效果就是主窗口中的一张表,出于学习的目的,我当然还是想继续用 SwiftUI 喽。毕竟初次尝试肯定会有种种问题,应该再给它一次机会。...但上图展示的效果其实是 AppKit 完成的,因为我 SwiftUI 一直实现不了预期的功能。大家应该注意到了,中间的 SpriteKit 视图上有三个按钮(分别是 +、200% 和 -)。...所以我尝试工作表显示出来后禁用渲染,但结果没有任何改变。 变更从一种环境传播至另一环境,我也遇到了类似的延迟问题。

4.9K20

SwiftUI 的方式进行布局

在上面的代码,由于两个视图使用了同样的动画曲线设定,因此,移动并不会出现分离的情况。...我们第一个 overlay 绘制了一个与视图二尺寸一致的视图( 不显示 ),并将其底边与屏幕底边对齐。...五、LayoutPriority SwiftUI 设置视图优先级( 使用 layoutPriority )是一个好用但并不常用的功能。...七、Transition 通过为视图设定 Transition( 转场 ),视图插入或将其移出视图树SwiftUI 将自动生成对应的动画效果。...有关转场动画的更多内容,请参阅 SwiftUI动画机制 一文 八、Layout 协议 4.0 版本SwiftUI 增加了 Layout 协议,通过该协议,开发者可以针对特定的场景,创建自定义布局容器

4.7K80
领券