SwiftUI是开发iOS、iPadOS、watchOS和macOS应用程序的现代方式。
它是对 "旧 "方式的一种范式转变,淘汰了许多现有的苹果框架。UIKit、AppKit和WatchKit。
这些框架有一个共同点:它们是强制性的。
你,程序员,准确地决定事情应该如何出现,一个像素一个像素地决定。然后你响应用户事件,手动更新数据。在每一个变化中,你也决定用户界面应该如何变化。
SwiftUI是一个彻底的改变,因为它是反应式的,用户界面反映了数据的状态。没有像UIKit那样的 "连接东西"。
而且你写的代码也少了很多。如果你以前用UIKit写过一个iPhone应用,你会经常想 "就这样了?"。
说到代码,用SwiftUI你只需写代码。不再有StoryBoard或Interface Builder。
我觉得这很完美,因为我可以将我的代码存储在Git中,我可以立即看到所做的修改,而不是一些XML的乱码。
现在,如果你以前从未使用过UIKit,你会不明白我的意思。这对你来说是好事,不用担心。
由于苹果能够在一块干净的石板上使用SwiftUI,我们有很多优势。
第一次接触到SwiftUI的应用程序是很吸引人的。
这是一个Hello World应用程序的代码。
import SwiftUI
struct ContentView: View {
var body: some View {
Text("Hello World")
}
}
你导入了SwiftUI模块,并声明一个符合View 协议的struct 。
该协议要求该结构有一个名为body 的计算属性,并返回some View 。
这就是我们在该结构中所做的。
body 计算属性返回一个类型为Text 的单一视图,其中包含内容Hello World 。
由于你会在SwiftUI中经常看到some View ,所以现在是解释我们为什么使用这个而不是View 的好时机。
这个声明迫使body 总是返回一个相同类型的视图,这对 SwiftUI 的工作方式至关重要。
一个原因是性能。为了提高性能,SwiftUI需要给予一些理所当然的东西。其中之一是每个结构都返回相同类型的视图,因此它可以轻松检查是否需要在屏幕上重绘。
在这种情况下,我们返回一个Text 视图,这就是我们的结构将始终返回的东西,无论其状态如何。