【问题标题】:SwiftUI: Setting View visibility based on a property value?SwiftUI:根据属性值设置视图可见性?
【发布时间】:2019-10-07 20:22:32
【问题描述】:

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

例如:

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

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

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

谢谢!

【问题讨论】:

  • 如果您的意思是“隐藏”,如从层次结构(和布局)中删除,那么 if <your_condition> { <your_view_here } 就是您所需要的...顺便说一句,您的属性的三元组没有问题,就是这样Apple 也在他们的示例中使用。

标签: swiftui


【解决方案1】:

如果您不想以这种方式使用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 修饰符,但即使删除也可以。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-08
    • 2017-12-28
    • 2022-09-23
    • 1970-01-01
    • 2020-10-11
    相关资源
    最近更新 更多