[SwiftUI 知识碎片] 视图作为属性

428 阅读1分钟
译自 Views as properties
更多内容欢迎关注公众号 「Swift花园」

在 SwiftUI 中,有许多方法可以让复杂的视图体系更易用,其中一种选择是使用属性 —— 将视图以属性的方式创建,然后在布局中使用这个属性。

举个例子,我们可以像下面这样以属性的方式创建了两个文本视图,然后在VStack中使用它们:

struct ContentView: View {
    let motto1 = Text("Draco dormiens")
    let motto2 = Text("nunquam titillandus")

    var body: some View {
        VStack {
            motto1
            motto2
        }
    }
}

使用这些属性时,你还可以应用 modifier ,就像下面这样:

VStack {
    motto1
        .foregroundColor(.red)
    motto2
        .foregroundColor(.blue)
}

以属性的方式创建视图有助于保持body 的代码更整洁 —— 它不仅避免了重复,还能支撑更复杂的代码。

Swift 不允许我们创建引用其他属性的存储属性,因为这会在对象创建时导致问题。这意味着创建一个绑定本地属性的TextField 会导致问题。

不过,你可以任意创建计算属性,就像下面这样:

var motto1: some View { Text("Draco dormiens") }


我的公众号 这里有Swift及计算机编程的相关文章,以及优秀国外文章翻译,欢迎关注~