首页 > 解决方案 > SwiftUI:根据属性值设置视图可见性?

问题描述

使用 SwiftUI 定义视图层次结构时,是否可以hidden()在定义的主体中设置视图的值?

例如:

var body: some View {
     VStack(alignment: .leading) {
          Text(self.name)
          .font(.headline)
          .hidden()
     }
}

会隐藏 Text 对象,但我想使用布尔属性来切换可见性。

有一种方法可以使用三元运算符和视图的不透明度值来做到这一点,但我希望有一个不那么聪明的解决方案。

谢谢!

标签: swiftui

解决方案


如果您不想以opacity这种方式使用修饰符:

struct ContentView: View {
    @State private var showText = true

    var body: some View {
         VStack(alignment: .leading) {
              Text("Hello world")
                .font(.headline)
                .opacity(showText ? 1 : 0)
         }
    }
}

您可以决定有条件地完全删除视图:

struct ContentView: View {
    @State private var showText = true

    var body: some View {
         VStack(alignment: .leading) {
            if showText {
                Text("Hello world")
                    .font(.headline)
            }
         }
    }
}

考虑到这两种方式都广泛用于SwiftUI. 对于您的具体情况,我会诚实地使用opacity修饰符,但即使删除也很好。


推荐阅读