©️ OverlookArt

View

视图是您用来声明应用程序的用户界面的基本元素。每个视图都包含对给定状态显示内容的描述。用户可见的应用程序的每个位都来自视图中的描述,任何符合 View 协议的类型都可以充当应用程序中的视图。

新建视图

通过定义一个结构体并遵守 View 协议, 来声明自定义视图类型。必须实现符合 View 协议的 body 计算属性。body 为视图提供内容和行为。

1struct CustomView: View {
2    var body: some View {
3        Text("CustomView")
4    }
5}
Note

body 计算属性只能有效接收一个内容,如果 body 内有多个内容时只会展示第一个内容,在视图中展示多个内容时,需要将多个内容组装到一个视图布局容器中,如 VStackHStack 或自定义视图容器等。

自定义外观

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) // 为视图的标题配置显示模式
    

生命周期

管理视图