繁体   English   中英

根据设备更改视图 - SwiftUI

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM