SwiftUI:根据属性值设置视图可见性?
Posted
技术标签:
【中文标题】SwiftUI:根据属性值设置视图可见性?【英文标题】:SwiftUI: Setting View visibility based on a property value? 【发布时间】: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 也在他们的示例中使用。
【参考方案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
修饰符,但即使删除也可以。
【讨论】:
以上是关于SwiftUI:根据属性值设置视图可见性?的主要内容,如果未能解决你的问题,请参考以下文章