SwiftUI 5 抛弃 Combine,扩展动画功能及更多

WWDC 2023 上 SwiftUI 5 的主要更新

在 WWDC 2023 上,苹果发布了其声明式 UI 编程框架 SwiftUI 的最新版本——SwiftUI 5。本次更新对框架的反应式基础进行了全面革新,引入了新的 Observation 框架,并增加了对分阶段动画的支持、改进了 ScrollView、新增了手势等功能。

Observation 框架的引入

新的 Observation 框架 带来了多项优势,包括简化的语法和语义、支持跟踪可选值和集合,以及扩展了 StateEnvironment 的使用,取代了 StateObjectEnvironmentObject。此外,Observation 框架不再需要为每个可观察属性使用 @Published 属性包装器,而是通过在类级别使用 @Observable 宏使该类的所有属性可观察。例如:

@Observable class Library {
    var books: [Book] = [Book(), Book(), Book()]
}

对于不希望被观察的属性,可以使用 ObservationIgnored 宏进行标记。对于已经使用 SwiftUI 和 Combine 的开发者,新框架的采用可以逐步进行

ScrollView 的改进

SwiftUI 5 增加了对 ScrollViewscrollPosition 跟踪功能。当视图滚动到新位置时,scrollPosition 修饰符会更新标识第一个可见视图的状态变量。此外,开发者可以使用新的 ScrollTargetBehaviour 协议选择滚动行为。

分阶段动画

SwiftUI 动画引入了完成处理程序,支持定义分阶段动画,即动画通过一系列状态或阶段进行,可能是循环的。开发者可以使用新的 PhaseAnimator 视图 来迭代阶段序列,并为每个阶段定义特定的动画。

新手势

SwiftUI 5 引入了两个新的手势:RotateGestureMagnifyGesture,分别用于跟踪视图的旋转和放大。这两个新类提供了更简洁的语法,使得对视图应用旋转和放大变换更加容易。

兼容性

这些新功能将于 iOS 17、iPadOS 17、macOS 17 及苹果其他操作系统秋季发布时正式可用。更多关于 SwiftUI 的新功能,请查看 Apple 在 WWDC 2023 上的演示

阅读 42
0 条评论