View
视图是您用来声明应用程序的用户界面的基本元素。每个视图都包含对给定状态显示内容的描述。用户可见的应用程序的每个位都来自视图中的描述,任何符合 View
协议的类型都可以充当应用程序中的视图。
新建视图
通过定义一个结构体并遵守 View
协议, 来声明自定义视图类型。必须实现符合 View
协议的 body 计算属性。body
为视图提供内容和行为。
1struct CustomView: View {
2 var body: some View {
3 Text("CustomView")
4 }
5}
Notebody 计算属性只能有效接收一个内容,如果 body 内有多个内容时只会展示第一个内容,在视图中展示多个内容时,需要将多个内容组装到一个视图布局容器中,如
VStack
、HStack
或自定义视图容器等。
自定义外观
ViewModifier:是一个协议,提供 body(content:)
方法来封装视图的自定义外观。在该方法内使用多个内置修饰符为视图创建个性化的外观。
1struct CustomModifier: ViewModifier {
2 func body(content: Content) -> some View {
3 content
4 .padding(.all, 8)
5 .border(.cyan, width: 1)
6 .foregroundStyle(.purple)
7 }
8}
Tip你可以为自定义修饰符声明属性,初始化时为内置修饰符参数提供不同的值,
View 提供了 modifier(_:)
方法,将自定义修饰符直接应用到当前视图。
1struct CustomView: View {
2 var body: some View {
3 Text("Custom View Modifier")
4 .modifier(CustomModifier())
5 }
6}
通常的做法是为视图扩展一个方法,使用 modifier(_:) 来应用自定义修饰符,视图调用这个方法就可将自定义修饰符应用到视图上。
1extension Text {
2 func customStyle() -> some View {
3 modifier(CustomModifier())
4 }
5}
6
7struct CustomView: View {
8 var body: some View {
9 Text("Custom View Modifier")
10 .customStyle()
11 }
12}
内置修饰符
将内置的修饰符可以应用于不同类型的视图来自定义外观和行为。
修改导航栏标题及展示模式
1 .navigationTitle("导航标题") //为视图配置导航标题 2 .navigationBarTitleDisplayMode(.inline) // 为视图的标题配置显示模式