簡體   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