SwiftUI应用程序结构
SwiftUI是一个声明性框架,可以帮助构建应用程序的用户界面。SwiftUI应用程序主要由App、Scene和View协议(Protocol)组成。
App structure
应用程序结构描述应用程序的内容和行为,每个SwiftUI应用程序都有且只有一个主应用程序结构。当在Xcode中创建一个名称为“XXX”的SwiftUI项目时,会自动创建一个“XXXApp.swift”的文件,这个文件中定义了其应用程序结构。
import SwiftUI
@main
struct MyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
-
import SwiftUI
表示应用程序导入SwiftUI框架,使得应用程序可以访问SwiftUI的符号和功能。 -
@main
属性指示SwiftUI应用程序的入口点,入口点负责应用程序的启动。SwiftUI应用程序包含且包含一个入口点。 -
struct MyApp: App{}
MyApp结构遵循App
协议。 -
var body: some Scene {}
该结构实现了计算属性的主体。该属性返回被称为Scene(场景)的应用程序内容。一个Scene包含定义一个应用程序用户界面的视图层次结构。SwiftUI提供了不同类型的Scene,包括WindowGroup、Window,、DocumentGroup和 Settings。 -
WindowGroup()
表示使用WindowGroup场景来表示应用程序显示的主窗口。SwiftUI为WindowGroup提供特定平台的行为,例如,在MacOS和iPadOS中一个Group可以同时打开多个窗口,在MacOS中,用户可以将window group的多个实例组合成一组标签。 -
ContentView()
表示该场景包含的内容视图。它是一个创建由图像和文本组成的视图层次的自定义视图。
Content view
在SwiftUI中,一个Scene(场景)包含应用程序显示为其用户界面的视图层次结构(view hierarchy)。视图层次结构定义了相对于其它视图的视图布局。在本文的示例中,WindowGroup场景包含ContentView使用其它视图组成的视图层次。
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundColor(.accentColor)
Text("Hello, world!")
}
.padding()
}
}
-
import SwiftUI
表示应用程序导入SwiftUI框架,使得ContentView
可以访问SwiftUI的符号和功能。 -
struct ContentView: View {}
表示ContentView遵循View协议。一个View定义了一个或多个出现在屏幕上某处的视觉元素。一个View通常由其它的Views组成,从而创建一个视图层次结构。 -
var body: some View {}
是 ContentView实现计算属性( Computed Property)的主体。实现Body是SwiftUI代码中常见的一种模式;例如当Structure符合App、Scene和View等协议时。 -
VStack{}
表示ContentView包含SwiftUI提供的视图VStack,它垂直排列子视图。同样的还有HStack、LazyHStack等。 -
Image(systemName: "globe")
表示VStack中的第一个子视图Image,这是一个显示图像的视图,这里表示要显示一个系统符号图像globe(地球)。想globe
这样的符号来自SF Symbols
,这是一个你可以在应用程序中使用的图标库。 -
.imageScale(.large)
用于设置图像的缩放,.foregroundColor(.accentColor)
用于为视图图像添加颜色。 -
Text("Hello, world!")
表示VStack中的第二个视图是文本,用于显示一行或多行只读文本的视图。 -
.padding()
表示ContentView将padding修饰符应用于VStack,向VStack视图的边缘添加特定于平台的默认填充量,即空格。