SwiftUI的SizeClass
所属分类:ios | 发布于 2024-12-04 12:25:27
之前发过一篇SwiftUI根据横竖屏自动切换布局结构的文章,现在做相机应用发现情况更复杂,使用UIDeviceOrientation不能满足需求,所以必须要研究SizeClass。
UIDeviceOrientation不能满足的原因是,相机应用会把app的iPhone Orientation设置为仅Portrait。
SwiftUI为我们提供了两个环境值来监视我们应用程序的当前大小类别,这在实践中意味着我们可以在空间受限时显示一个布局,在空间充足时显示另一个布局。
verticalSizeClass:提示垂直方向(高度)是常规的还是紧凑的
horizontalSizeClass:提示水平方向(宽度)是常规的还是紧凑的
SizeClass根据屏幕显示区域的宽松程度分为两类:
常规:Regular
紧凑:Compact
大致分类
所有的iPhone在横屏模式下都有compact width和regular height。
大部分iPhone在横屏模式下使用的是compact width和compact height。
大号iPhone(Plus-sized 和 Max devices)在横屏模式下使用的是regular width 和 compact height。
所有的iPad在横竖屏模式下都适用的是regular width和regual height。
有一种特殊情况就是当在iPad中使用了分屏模式时,SizeClass根据当前iPad的型号来确定,这里暂时忽略。