SwiftUI 会取代 UIKit 么?

667次阅读  |  发布于4年以前

WWDC20 又为 SwiftUI 发展注入了强大的动力,在 200+ 个 Session 中,至少有 17 个 Session 直接或间接地与 SwiftUI 相关,足见 Apple 对 SwiftUI 的重视程度。

在 2019 年的 WWDC 上,苹果发布了 SwiftUI 框架,在整个苹果开发者社区中引起了轰动。Craig Federighi 在会议上向我们展示了如何使用 SwiftUI 将原本数百行的代码变成几十行。

这不正是每个开发人员想要的东西么?在这篇文章中,我们将讨论 SwiftUI 的独有功能,以及它将如何改变我们的编码方式。

自从发布以来,开发人员就一直在期待 SwiftUI 的各种新功能。诚然,SwiftUI 是一个突破性的 Apple 框架,能帮助我们开发出出色的、功能强大的应用程序。如果你还是一个新手,并且不知道 "SwiftUI 到底是什么",那么答案都在这里。

用苹果自己的话说:

SwiftUI 提供了一种创新的、非常简单的方法,可以借助 Swift 强大能力在所有的 Apple 平台上构建 UI。仅使用一组工具和 API 就可以为任何 Apple 设备构建 UI。SwiftUI 有易于阅读且易于编写的声明式 Swift 语法,可以与新的 Xcode 设计工具无缝协作,以使你的代码和设计完美同步。自动支持动态类型、Dark Mode、本地化和可访问性,这意味着你的第一行 SwiftUI 就已经是你编写过的功能最强大的 UI 代码了。

所以,SwiftUI 打破了 Apple 现有的体系,它是一个新的高级工具包,将改变 iOS 设计、构建应用程序的方式。再次强调一下,SwiftUI 是针对 Apple 所有平台的,即包括 iOS、iPadOS、macOS、watchOS 和 tvOS。

通过使用 Swift 语言,它使 Apple 中的应用程序开发更易上手,且开发得更快。SwiftUI 框架使代码更具可读性,减少了应用开发的时间。它能帮助开发人员以简单且声明式的方式构建用户界面,例如自定义控制、动画和特效。

让我们更进一步,来探索 SwiftUI 的潜力。这个框架提供了一个 Apple 平台经典和独特功能的选项。你可以尽情享用诸如鼠标和触控板的速度、touch bar、Dark Mode、动态类型、本地化等等功能。

SwiftUI 将很快成为 Google Flutter UI 框架的强大竞争动手。

不过,这里还有另一个问题,

SwiftUI 会取代 UIKit 么?

答案是"否",SwiftUI 不会取代 UIKit。原因是 Apple 已经让 SwiftUI 与 UIKit 高度兼容。因此,在开发过程中并不需要更改现有代码。另外,在 SwiftUI 中,还可以使用 UIKit 和 Swift 来创建自定义视图。

接下来,我们将更深入在研究 SwiftUI 的功能,以及这些功能如何将各种范式转移到应用程序开发中。

运行在 Apple 最新的操作系统中

使用 SwiftUI 开发的应用程序将在所有 Apple 的 OS 平台上兼容,但不是支持老版本,同时需要 Xcode 11+。

Native 特征

即使使用 SwiftUI 开发的代码可以在 Apple 所有操作系统上运行,但它是 native 开发。它适应了平台的所有 native 特性和功能,从而可以快速地提供交互式 UI。

SwiftUI 框架可以与诸如 ARKit 和自动语言优化之类的 API 集成在一起,这更加增加了其灵活性。这意味着它将为开发人员和用户带来无缝的 Swift iOS 体验。

不支持 Auto Layout

Auto Layout 允许开发人员更加灵活支使用 UI,曾经是布局声明的首选方式之一。但是,新的 SwiftUI 并不支持 Auto Layout,而是支持结构化的布局。它的功能几乎与 WatchOS 中的布局处理相同。

声明式语法

声明式语法为 SwiftUI 吸引了数百万的目光。声明式语法意味着以简单易懂的方式来实现 UI。我们可以在应用程序中以声明式的方式定义元素,并设置它们的字体类型、大小、对齐方式、颜色等属性,还可以以简单的几行代码轻松地引入复杂的动画。这种声明式语法使管理和创建 UI 元素变得更加顺畅、一致和轻松。这种易于开发和部署的方式减少了应用程序的总体开发时间。

不支持Storyboard

SwiftUI 用代码替换了 Storyboard。这意味着使用这个框架来制作可重用的视图会更加容易。而 SwiftUI 的方式更加强大,因为开发人员可以决定是使用可视化视图操作还是直接用代码实现。

拖放 UI

令人惊讶的是,SwiftUI 允许开发人员选择任何元素,只需从库中拖动各种控件并直接在画布并对其自定义即可。开发人员可以自由地重新排列控件,更改设计、字体、颜色等。通过这种方式,开发人员可以使 UI 与代码完美同步。

支持 Dark Mode

Dark Mode 的适配需要一些时间,而 SwiftUI 却是天生支持。SwiftUI 让 UI 在夜间也能友好的显示,从而让用户获取更好的体验。对于那些在晚上不习惯使用明亮主题的开发人员而言,这也是个非常好的消息。

预览

利用 SwiftUI 框架的预览功能,开发人员有机会创建多个设计预览,并将其显示在多种设备和不同的方向上。这是预先体验 App 设计、颜色和其它方面的非常棒的方法。

动态替换

Xcode 11 集成了 Swift 编译器和运行时。因此,可以实时构建和运行 iOS 应用程序的代码。这意味着 canvas 不是只展示 UI 的大致外观,而是实时展示应用程序及其功能的实际情况。同样,使用 Xcode 的开发人员可以使用动态替换因子直接在实时应用程序中替换代码。

视图组合

新的 SwiftUI 中的视图非常轻巧,在创建视图时性能损失基本为 0。SwiftUI 的视图以 Swift 结构体的方式进行访问,开发人员可以创建或将其作为值类型参数传递。通过消除过多的内存分配以及一些子类和动态消息的处理,开发人员能从中受益。而 UIView 则不支持此功能。

此外,在显示和布局周期中,可以将参数和修饰符统一为一个实体。对于开发人员而言,可以根据要求来构建特殊用途的视图。

iOS 13+ 兼容性

由于拥有诸如 Dark Mode、本地化等强大功能,可以说,SwiftUI 是最适合编码的。借助易于编写的代码,SwiftUI 彻底改变了我们开发 iOS 应用程序的方式。此外,由于它是跨平台兼容的,这意味着开发人员可以在不失去 native 功能的情况下无缝构建应用程序。

颜色

SwiftUI 的每一项功能都吸引着开发人员朝着它迅速转变。而谈到颜色,这个框架也不会让你失望。SwiftUI 框架的颜色会根据 dark 和 light 模式自动更改。该框架有标准颜色,如红绿蓝等。

小结

我们希望现在大家都能认同 "SwiftUI 非常强大" 这一观念,并让它与其它语言主流语言竞争时更具竞争力。这个框架的更多潜力尚待探索。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8