swiftui - SwiftUI:根据属性值设置视图可见性?
问题描述
使用 SwiftUI 定义视图层次结构时,是否可以hidden()
在定义的主体中设置视图的值?
例如:
var body: some View {
VStack(alignment: .leading) {
Text(self.name)
.font(.headline)
.hidden()
}
}
会隐藏 Text 对象,但我想使用布尔属性来切换可见性。
有一种方法可以使用三元运算符和视图的不透明度值来做到这一点,但我希望有一个不那么聪明的解决方案。
谢谢!
解决方案
如果您不想以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
修饰符,但即使删除也很好。
推荐阅读
- c++ - UI 没有在 QT 设计器中更新
- jquery - 如何从链接属性接收数据
- mysql - Mysql 数据库大小增长超过 4 TB?Azure 最多支持 4 个
- r - 在r中的json字符串中获取所有可能的键/键路径
- piranha-cms - 从 Piranha CMS 中的图像文件名中删除 guid
- python - 为什么 set().union(*list1) 给了我一个列表中两个列表的并集?
- docusignapi - 无法将 docusign 与第三方应用程序集成
- git - 从远程仓库拉取时,GitLab 镜像功能不起作用
- html - 为什么我的溢出和文本溢出:省略号代码在 MS Edge 中不起作用?
- unity3d - 单击播放按钮时如何使对象保持在其位置