我使用 aZStack
在主 UI 下方显示全屏背景图像。主 UI 由VStack
多个视图组成,这些视图由灵活的 Spacers 分隔,以在不同的设备尺寸上按比例缩小或放大。现在我体验到 Spacers 不会在小型设备上按比例缩小,因为小型设备上的背景图像仍然大于屏幕尺寸并保持ZStack
高,请参阅 iPhone 8 预览的屏幕截图。我在这里做错了什么?
代码:
import SwiftUI
struct TestView: View {
var headerView: some View {
VStack {
Text("HEADER").padding([.leading,.trailing], 100)
}
}
var middleView: some View {
HStack {
Text("MIDDLE").padding([.leading,.trailing], 100)
}
}
var bottomView: some View {
VStack {
Text("BOTTOM").padding([.leading,.trailing], 100)
}
}
var body: some View {
ZStack {
// Background Image
Image("BgImg")
.resizable()
.aspectRatio(contentMode: .fill)
.edgesIgnoringSafeArea(.all)
// Main UI
VStack(spacing: 0) {
headerView
.frame(height:222)
.background(Color.red)
Spacer()
middleView
.frame(height:155)
.background(Color.orange)
Spacer()
bottomView
.frame(height:288)
.background(Color.yellow)
}
.padding(.bottom, 32)
.padding(.top, 54)
// END Main UI
}
.edgesIgnoringSafeArea(.all)
.statusBar(hidden: true)
// END ZStack
}
}