阅读 2777

SwiftUI 学习路线图

2019年 iOS 开发领域发生了巨大变化。我们有了一个新的 SwiftUI 框架。SwiftUI 是为 Apple 生态系统构建应用程序的全新的声明式方式。在这里让我们来构建一个 SwiftUI 学习曲线。我想与您分享学习 SwiftUI 所需的所有的文章列表。

基本

苹果今年整理了一份 SwiftUI 教程1,这是一项出色的工作。我建议从这些教程开始学习 SwiftUI 的基础知识。

属性包装器是用于支持 SwiftUI 框架的 Swift 语言新功能之一。要了解最重要的属性包装器,例如 @State,@Binding,@ObservedObject,@EnvironmentObject 和 @Environment,请阅读我的 Understanding Property Wrappers in SwiftUI2 一文。

我写的另一篇有关 SwiftUI 机制的文章是 You have to change mindset to use SwiftUI3 。 它应该可以帮助您了解 SwiftUI 的工作原理。

[1]https://developer.apple.com/tutorials/swiftui/
[2]https://swiftwithmajid.com/2019/06/12/understanding-property-wrappers-in-swiftui/
[3]https://swiftwithmajid.com/2019/11/19/you-have-to-change-mindset-to-use-swiftui/

布局系统

SwiftUI 也有一个全新的布局系统,它比 AutoLayout 拥有更多的乐趣。新的布局系统非常强大且直接。我强烈建议您阅读这些文章,以了解新的布局系统及其好处。

SwiftUI Layout System5

Inspecting the View Tree – Part 1: PreferenceKey6

Inspecting the View Tree – Part 2: AnchorPreferences7

Inspecting the View Tree – Part 3: Nested Views8

[5]https://kean.github.io/post/swiftui-layout-system
[6]https://swiftui-lab.com/communicating-with-the-view-tree-part-1/
[7]https://swiftui-lab.com/communicating-with-the-view-tree-part-2/
[8]https://swiftui-lab.com/communicating-with-the-view-tree-part-3/

框架

SwiftUI 与 React 框架有很多相似之处,为 iOS 开发带来了许多新概念。我使用这些想法构建了一些应用程序,并且非常喜欢它的工作方式。以下是一些有用的文章列表。

Introducing Container views in SwiftUI9

Modeling app state using Store objects in SwiftUI10

Redux-like state container in SwiftUI11

[9]https://swiftwithmajid.com/2019/07/31/introducing-container-views-in-swiftui/
[10]https://swiftwithmajid.com/2019/09/04/modeling-app-state-using-store-objects-in-swiftui/
[11]https://swiftwithmajid.com/2019/09/18/redux-like-state-container-in-swiftui/

SwiftUI 的声明式

SwiftUI 是一个声明式框架。这意味着您声明要实现的目标,然后框架会处理该问题并决定如何呈现您的视图。根据上下文,完全相同的视图可以具有另一种外观。我写了一些关于 SwiftUI 中声明式方法的文章。

Building forms with SwiftUI11

View composition in SwiftUI12

Reusing SwiftUI views across Apple platforms13

ViewModifiers in SwiftUI14

Composable styling in SwiftUI16

[12]https://swiftwithmajid.com/2019/06/19/building-forms-with-swiftui/
[13]https://swiftwithmajid.com/2019/10/30/view-composition-in-swiftui/
[14]https://swiftwithmajid.com/2019/10/23/reusing-swiftui-views-across-apple-platforms/
[15]https://swiftwithmajid.com/2019/08/07/viewmodifiers-in-swiftui/
[16]https://swiftwithmajid.com/2019/08/28/composable-styling-in-swiftui/

动画和交互

SwiftUI 使用动画来为您处理所有状态更改。它使我们能够以一种非常直接且美观的方式来构建交互式视图。我在博客上多次讨论了这个主题。

Animations in SwiftUI17

Gestures in SwiftUI18

Building Bottom sheet in SwiftUI19

Building Pager view in SwiftUI20

[17]https://swiftwithmajid.com/2019/06/26/animations-in-swiftui/
[18]https://swiftwithmajid.com/2019/07/10/gestures-in-swiftui/
[19]https://swiftwithmajid.com/2019/12/11/building-bottom-sheet-in-swiftui/
[20]https://swiftwithmajid.com/2019/12/25/building-pager-view-in-swiftui/

我还想提提 Javier 关于 SwiftUI 中高级动画的出色系列文章。

Advanced SwiftUI Animations – Part 1: Paths21

Advanced SwiftUI Animations – Part 2: GeometryEffect22

Advanced SwiftUI Animations – Part 3: AnimatableModifier23

[21]https://swiftui-lab.com/swiftui-animations-part1/
[22]https://swiftui-lab.com/swiftui-animations-part2/
[23]https://swiftui-lab.com/swiftui-animations-part3/

辅助功能

SwiftUI 采取了另一举措,使我们的应用程序默认可访问。它开箱即用,但是它也提供了一个非常好的 API 来自定义可访问性。要了解有关 SwiftUI 中可访问性的更多信息,建议阅读以下文章:

Accessibility in SwiftUI24

Dynamic Type in SwiftUI25

Localization in SwiftUI26

[24]https://swiftwithmajid.com/2019/09/10/accessibility-in-swiftui/
[25]https://swiftwithmajid.com/2019/10/09/dynamic-type-in-swiftui/
[26]https://swiftwithmajid.com/2019/10/16/localization-in-swiftui/

绘制自定义视图

SwiftUI 提供了一个 Shape API,使我们能够快速构建自定义视图。我在其中一个应用程序中制作图表时了解了这一点。

Building BarChart with Shape API in SwiftUI27

Gradient in SwiftUI28

GeometryReader to the Rescue29

[27]https://swiftwithmajid.com/2019/08/14/building-barchart-with-shape-api-in-swiftui/
[28]https://swiftwithmajid.com/2019/11/13/gradient-in-swiftui/
[29]https://swiftui-lab.com/geometryreader-to-the-rescue/

结论

2019 是非常重要的一年,我希望我们能在 WWDC 2020 期间获得具有许多新功能的 SwiftUI 2.0。在下一个 SwiftUI 版本发布之前,我们还有很多事情要学习。