SwiftUI的View有一个属性hidden
,可以让我们隐藏视图。但是,在某些情况下,我们需要只隐藏视图组件中的一部分。这时,我们可以创建一个View extension,给View添加一个hidableViews
方法,允许我们选择性地隐藏子视图。
下面是实现这个的代码示例:
extension View {
func hidableViews(if condition: Bool, @ViewBuilder content: () -> V) -> some View {
Group {
if condition {
content().opacity(0)
} else {
content()
}
}
}
}
hidableViews
接受一个布尔变量condition
,并根据这个条件来选择性地隐藏视图。
使用示例:
struct ContentView: View {
@State private var isHidden = false
var body: some View {
VStack {
Text("This is always visible")
hidableViews(if: isHidden) {
Text("This is hidden if isHidden is true.")
}
Button(action: {
self.isHidden.toggle()
}) {
Text("Toggle isHidden")
}
}
}
}
在上面的示例中,我们创建了一个isHidden
属性来控制hidableViews
方法中的子视图的显示和隐藏。当点击“Toggle isHidden”按钮时,isHidden
属性的值会切换,以选择性地隐藏子视图。
下一篇:部分应用参数而不声明一个新函数