SwiftUI:将视图作为属性

有很多方法可以简化在SwiftUI中使用复杂的视图层次结构,一种选择是使用属性——将视图创建为您自己的视图的属性,然后在布局中使用该属性。

例如,我们可以创建两个像这样的文本视图作为属性,然后在VStack中使用它们:

struct ContentView: View {      let motto1 = Text("Draco dormiens")      let motto2 = Text("nunquam titillandus")        var body: some View {          VStack {              motto1              motto2          }      }  }

您甚至可以在使用这些属性时直接将修饰符应用于这些属性,如下所示:

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

将视图创建为属性可以帮助您使body代码更清晰——不仅有助于避免重复,而且还可以使用body属性之外的复杂代码。

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

但是,您可以根据需要创建计算属性,如下所示:

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

Previous: 环境修饰符

Hacking with iOS: SwiftUI Edition

Next: 视图拆分与组合