SwiftUI-创建视图窗口

软件不能失去窗口,就像西方不能失去耶路撒冷

声明文件

新项目默认有写好的声明文件。

若无则创建,名称必须为软件名+App

例如下图创建项目时名称为test,声明文件名称则为testApp

视图声明文件示例

Tip
视图与窗口的关系

独立窗口内可以多个页面,每个页面占据一个视图,即窗口包括视图。一个App可打开多个窗口,其包括的视图可相同,例如打开多个“文本编辑器”书写文稿的场景。

导入SwiftUI模块

1
2
代码示例
import SwiftUI

标记程序入口

1
2
代码示例
@main

搭建接口

先使用Struct以软件名定义一个结构体,APP协议要求实现body属性

再使用var定义body属性,some Scene协议要求实现场景

WindowGroup为场景类型,用于管理视图(可定义多个),最后在它下方定义视图(可定义多个)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
代码示例
struct testApp: App {//"testApp"需与声明文件名称一致
var body: some Scene {
WindowGroup("The first windowgroup", id: "First") {//逗号前是窗口名称,后面定义的id方便后面调用
ContentView()//"ContentView"为视图名称
//ContentView2()
//ContentView3()
}
WindowGroup("The second windowgroup", id: "Second")
ContentView()//这里视图与第一个窗口组内的相同,若想区别请定义其他名称
//ContentView2()
//ContentView3()
}
}
}

视图文件

新项目默认有写好的视图文件与视图声明文件配合

若无则创建,名称必须与视图声明文件内WindowGroup下定义的一致

视图文件示例

导入SwiftUI模块

1
2
代码示例
import SwiftUI

搭建接口

先使用Struct以视图名定义一个结构体,View协议要求实现body属性

再使用var定义body属性,some View协议要求实现视图

可在其下定义文本、图片、链接,后续会介绍

1
2
3
4
5
代码示例
struct ContentView: View {
var body: some View {
}
}

显示画布

便于实时预览内容更改

仅能定义一个,若需预览其他视图需更改

画布示例

1
2
3
#Preview {
ContentView()
}