[英]Change view based on device - SwiftUI
我最初为 iPad 设计了我的应用程序,现在我也想为 iPhone 添加功能。 有没有办法检查正在使用的设备是什么,然后相应地显示一个视图?
结构化英语:
IF current_device == iPhone THEN
DISPLAY iPhoneView
ELSE IF current_device == iPad THEN
DISPLAY iPadView
如果可能的话,我还希望 iPad 视图只能水平使用,然后 iPhone 视图只能在可能的情况下垂直使用。
您正在寻找的是Size Classes 。
要在 SwiftUI 视图中读取当前horizontalSizeClass
尺寸 class ,您可以参考 HorizontalSizeClass 的环境值
@Environment(\.horizontalSizeClass) var horizontalSizeClass
然后在您的 SwiftUI View
中像这样使用它:
var body: some View {
if horizontalSizeClass == .compact {
return CompactView() // view laid out for smaller screens, like an iPhone
} else {
return RegularView() // view laid out for wide screens, like an iPad
}
}
值得注意的是,并不是所有的 iPhone 都是横向compact
的,在多任务配置中 iPad 上存在compact
尺寸 class。 您将在“设备大小类别”和“多任务大小类别”部分下找到所有可能的组合。
一些可能有帮助的文章
或者,您可以使用如下变量根据设备高度(或宽度)设置单独的阈值:
@State var isLargeDevice: Bool = {
if UIScreen.main.bounds.height > 800 {
return true
} else {
return false
}
}()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.