上篇文章<Swift编程-Size Class显示方向自适应布局>介绍了Swift的size class机制,应用此机制可以根据屏幕的尺寸和朝向进行布局的调整,本文给出程序范例。
swift提供了两个 environment property wrapper来提供size class值。分别是:
- verticalSizeClass 提示垂直方向(高度)是常规的还是紧凑的
- horizontalSizeClass 提示水平方向(宽度)是常规还是紧凑的
程序范例
首先在View结构中声明环境变量:
@Environment(\.verticalSizeClass) var verticalSizeClass
@Environment(\.horizontalSizeClass) var horizontalSizeClass
然后在body中给出根据环境属性wrapper打印出的Text:
var body: some View {
if verticalSizeClass == .regular && horizontalSizeClass == .regular {
Text("Regular Height / Regular Width")
}
if verticalSizeClass == .regular && horizontalSizeClass == .compact {
Text("Regular Height / Compact Width")
}
if verticalSizeClass == .compact && horizontalSizeClass == .regular {
Text("Compact Height / Regular Width")
}
if verticalSizeClass == .compact && horizontalSizeClass == .compact {
Text("Compact Height / Compact Width")
}
}
运行结果
以下是运行结果:
iPad Pro 横置
Simulator Screen Shot - iPad Pro (9.7-inch) - 2022-01-18 at 12.10.36.png
iPhone 13 竖置
Simulator Screen Shot - iPhone 13 - 2022-01-18 at 12.11.05.png
iPhone 13 横置
Simulator Screen Shot - iPhone 13 - 2022-01-18 at 12.11.16.png