从新面孔的苹果奖学金获得者到已经数度参加 WC 的资深开发者,对于“你看到的最激动人心的事情是什么?”这个问题,回答无疑都是看到了 SwiftUI 的发布。
最好的工具
为什么 SwiftUI 对于开发者那么重要呢?原因其实很简单,因为新的 SwiftUI 框架利用了苹果自定义创建的 Swift 语言的特性,使开发人员更容易、更快地构建更好的用户界面代码,同时错误会更少,也能创造更多的功能。
也就是说,我们将可以把更少的精力花在创建常规交互元素的应用上,从而可以减少代码调试和维护的次数,以及使用如下功能:自动适应 iOS 和 macOS 的深色模式、支持新平台功能的催化剂项目(Project Catalyst)、先进的可访问性、动态类型、允许用户调整大小的文本、多语种的广泛本地化、优美流畅的动画、洁净的苹果 UI 和导航。
SwiftUI 让苹果开发者专注于打造自己的原创内容,同时可开发出更统一、更强大、外观更现代的软件,影响将是巨大的。
苹果在 WWDC14 上推出了新的 Swift 编程语言,该语言借鉴了多种流行语言的思想,形成了苹果所希望的“一种工业质量的编程语言同样应该具有表现力和趣味性”。因为创造 Swift 的初衷就是为了简洁、易于理解和调试,不仅对于 Java 和 c# 开发人员来说上手非常简单,而对于新程序员来说学习该代码通常比学习 Objective C 更容易。
在 WWDC16 上,苹果公司将为 推出了一款名为 Swift Playgrounds 的应用程序,旨在让学生和初学者更容易地掌握 Swift 学习编程的技能。苹果还发起了“人人都能编程”(Everyone Can Code)倡议,将操场推广为学习编程的工具,并发布了为期一年的 Swift 软件开发课程,名为“用 Swift 开发 App”(App development with Swift)。
Swift 代码可为 macOS 创建 AppKit 项目,也可用于为 、iPad、Apple TV 和 Apple Watch 创建 UIKit 应用。在此之前,这些开发 API 是需要在 Swift 代码产生前构建,而现在新的 SwiftUI 可以直接搞定上述这些工作,大大简化该过程,加快跨平台 App 的用户界面布局工作。
交互独特性
SwiftUI 的目的是创造一种让开发人员“学习一次,就能在任何地方编写出合适代码”的工具。与 Swift 本身一样,SwiftUI 也是可视化的,允许程序员对 UI 进行布局,然后以适合于每种设备的方式调整 UI 在多个平台上的外观和工作方式。
虽然 Android、Java 和 10 都追求一个理想的代码,但 SwiftUI 遵循苹果独特的思维方式,那就是可以让每个产品的 OS 都能符合特定交互方式。例如,Apple Watch 不仅仅是你手腕上的一个小 iPhone,它运行的 watchOS 交互被设计为简短和便于查看式,用户的手势很简单,所呈现的数据简短而有意义,它通过数字表冠提供了独特的输入机制,这在可穿戴设备上很有意义,但在平板电脑或台式电脑上就不一样了。
今年,苹果进一步扩大了 iPhone 和 iPad 在 OS 层面的差异性。新的 iPadOS 交互风格将明显不同于手持 iPhone 或 touch,它将支持应用程序的拖放交互、屏幕分割和滑动功能。类似地,Mac 用户通常是固定坐着使用,屏幕更大,并附带物理键盘和鼠标,更容易处理与重叠窗口、多个空格、甚至可以跨多个显示器扩展屏幕。
苹果还宣布了 Project Catalyst 的跨平台并行计划,使现有的 iPad 应用能够适应 Mac 电脑的本地工作,并充分利用其复杂的交互模式。SwiftUI 提供了一种构建 UI 代码的替代方案,可以重用 UI 代码,并对其进行调整,以快速地创建跨苹果平台运行的应用。
图形化语言
从最初的麦金塔电脑问世以来,苹果一直致力于使用动画来强化用户界面的想法,增强用户体验,并开创了可访问性的先河,而且通过为有视觉、听觉或运动障碍的人提供输入数据和理解响应的新方法,确保任何人都可以使用它的计算工具。包括先进的本地化工作,也给不同地域使用苹果产品的人带来优秀体验。
然而,这些特性都需要第三方开发人员进行大量工作,以确保他们的 App 具有与原生系统相同的动画、可访问和本地化特性。通过 SwiftUI,苹果正在帮助开发人员尽可能轻松地支持这些功能。在许多情况下,SwiftUI 会自动完成这些工作。
使用 SwiftUI 的可视化语法,开发人员只需声明他们的用户界面应该做什么,在编写上类似于 web 上的 JavaScript,这有助于创建简单、易于阅读、易于维护的代码。SwiftUI 的可视化风格还支持复杂的动画,可以通过从现成的效果集合中进行选择,并轻松地将其添加到控件中,系统就能自动处理所有需要显示平滑的 UI 动画了。
在设计画布上,图形化编辑与编辑器中的代码同步。当你键入代码时,代码会立即显示在图形预览中。Xcode 会立即重新编译更改,并将其插入到应用程序的运行版本中,该版本在任何时候都是可见和可编辑的。
你还可以创建多个 SwiftUI 视图预览,以显示示例数据,并配置用户可能设置的变体,如深色模式、较大的动态类型字体或外语本地化,预览还可以在任何虚拟设备和任何方向上显示 UI。
苹果还为开发者们创造了一系列演示如何构建一个 SwiftUI iPhone 应用程序,并一步一步解释如何创建一个新的 Xcode 项目、文本布局和视图使用栈,如何自定义图像视图,如何使用 UIKit SwiftUI 视图,如何构建列表和导航,如何处理用户输入,如何画出路径和形状,如何实现动画视图和转换,然后如何组成更复杂的接口,如何连接 UI 控件和 UIKit 的界面。
体验大优化
那么 SwiftUI 将为用户做些什么呢?目前,SwiftUI 代码只适用于苹果的新操作系统:macOS Catalina 10.15、iOS 13、iPadOS 13、tvOS 13 和 watchOS 6。这意味着普通用户要到 9 月左右才能看到 SwiftUI 的应用程序,而且,由于 App 的开发一般需要提前做系统适配,所以我们看到 SwiftUI 设计的应用问世可能需要一些时间。
然而,正如 Swift 帮助苹果开发者变得更有效率一样,SwiftUI 也是苹果创造更熟练、更有能力的程序员的长期策略。这不仅有助于提高 App 质量,还应该有助于让 iOS 开发者更容易地将他们的工作带到苹果平台上。正如“催化剂”项目承诺将帮助将 iPad 应用程序引入 Mac电 脑一样,SwiftUI 也将使 iOS 应用更容易被移植到 iPad、Apple TV 和 Apple Watch 并进行适当的优化,与各自的平台原生完成配套,以提供尽可能最好的体验。
SwiftUI 还承诺将改善应用的外观,使开发人员更容易整合流畅的动画,更好地支持全局本地化,支持深色模式和动态文本,以及帮助残疾用户的辅助功能等等。SwiftUI 在改进苹果开发平台方面的自动特性也暗示了未来的功能:苹果对其框架进行改进,第三方 App 则可以免费继承这些框架。
此外,SwiftUI 和 Swift 还可以让更多的用户更容易进入到编程领域,包括那些对创作 App 有想法但缺乏相关编程技能的人。通过使其开发工具更容易被学习和使用,苹果可以继续在全球范围内扩展开发者基础,为他们提供最好的平台来展示和销售作品,当然这也是广大苹果用户们喜闻乐见的成果。