在 SwiftUI 中,ZStack
是一种用于堆叠视图的容器,它可以将多个视图放置在同一位置,按照 z 轴方向(前后层次)叠加在一起,类似于 Photoshop 或 Sketch 等图形编辑器中的图层概念。最上方的视图将在视觉上覆盖下方的视图,但所有视图都保留在同一坐标空间内。
使用 ZStack
可以轻松实现背景图片、遮罩、水印、浮动提示框等效果。下面是一个简单的 ZStack
使用示例:
import SwiftUI
struct ContentView: View {
var body: some View {
ZStack {
// 创建 ZStack 容器
Color.gray // 底层视图,填充背景色为灰色
VStack {
// 中间层视图,垂直布局
Text("Hello")
.foregroundColor(.white)
.font(.largeTitle)
Text("World!")
.foregroundColor(.white)
.font(.title)
}
.padding()
.frame(maxWidth: .infinity)
.background(Color.black.opacity(0.5)) // 添加半透明黑色背景
Image(systemName: "star.fill")
.foregroundColor(.yellow)
.font(Font.system(size: 80))
.offset(x: 50, y: -100) // 上层视图,星星图标,设置偏移使其位于顶部中间偏右的位置
}
.edgesIgnoringSafeArea(.all) // 忽略安全区域边缘,让内容延伸至屏幕边缘
}
}
在这个例子中,ZStack
包含了三层视图:
- 背景色为灰色的底层视图。
- 居中带有文本的中间层视图,背景为半透明黑色。
- 位于顶层的一个黄色填充的星形图标,它相对于其他视图有一定的偏移量,因此会在屏幕上看到文字内容以及在它们之上的星形图标。