在 SwiftUI 中,opacity 用于设置视图的透明度。它的取值范围是 0.0 到 1.0,其中:
1.0 表示完全不透明。
0.0 表示完全透明。
Color.red
.opacity(0.3) // 点击透明度为 0.3
可以看到小猪被透明度为0.3红色的方块所覆盖。
使用示例
1、设置基本透明度
Text("Hello, SwiftUI!")
.font(.title) // 100% 透明度
Text("Hello, SwiftUI!")
.font(.title)
.opacity(0.5) // 设置 50% 透明度
2、动态控制透明度
可以使用 @State 或条件语句动态更改透明度:
struct ContentView: View {
@State private var isHidden = false
var body: some View {
VStack {
Text("Tap to Show/Hide")
.opacity(isHidden ? 0.0 : 1.0) // 根据状态切换透明度
.animation(.easeInOut, value: isHidden) // 动画过渡
Button("Toggle") {
isHidden.toggle()
}
}
}
}
注意事项
1、透明度层级:
当视图的透明度设置为 0.0 时,它虽然不可见,但仍然会占用布局空间。如果需要完全隐藏并不占用空间,可以使用 .hidden()。
2、透明度叠加:
如果父视图和子视图都设置了 opacity,实际透明度会叠加。比如,父视图 opacity(0.5),子视图 opacity(0.5),子视图最终透明度为 0.25。
3、性能影响:
过多的透明视图可能会影响性能,特别是在复杂的动画场景中。