【问题标题】:How to detect current device using SwiftUI?如何使用 SwiftUI 检测当前设备?
【发布时间】:2020-07-21 15:30:15
【问题描述】:

我正在尝试确定正在使用的设备是 iPhone 还是 iPad。

请看这个问题:Detect current device with UI_USER_INTERFACE_IDIOM() in Swift

如果您使用 UIKit,该解决方案将有效。但是

如果你使用的是 SwiftUI,等效的方法是什么?

【问题讨论】:

    标签: ios uikit swiftui


    【解决方案1】:

    您可以找到设备类型,如下所示:

    if UIDevice.current.userInterfaceIdiom == .pad {
        ...
    }
    

    【讨论】:

    • 你可以在 SwiftUI 中这样做吗?
    • 不导入 UIKit 就无法使用。
    • Xcode 向我抱怨说“使用未解析的标识符 'UIDevice'。只有当我导入 UIKit 时它才会消失
    • 我导入以下内容:import Foundation import SwiftUI
    • 您使用的是什么版本的 Xcode?只需import SwiftUI 也适用于我
    【解决方案2】:

    你可以用这个:

    UIDevice.current.localizedModel
    

    在您的情况下,实现方法可能是:

    if UIDevice.current.localizedModel == "iPhone" {
         print("This is an iPhone")
    } else if UIDevice.current.localizedModel == "iPad" {
         print("This is an iPad")
    }
    

    显然,您可以将其用于字符串插值,例如(假设当前设备类型是 iPhone):

    HStack {
         Text("Device Type: ")
         Text(UIDevice.current.localizedModel)
    }
    
    //Output:
    //"Device Type: iPhone"
    

    它将返回设备类型。 (iPhone、iPad、AppleWatch)如果您选择 SwiftUI 作为界面,则除了应该在创建项目时已经导入的 SwiftUI 之外,无需进一步导入。

    注意:它不返回设备模型(尽管有“.localizedModel”)

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2014-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-27
      • 2014-06-09
      相关资源
      最近更新 更多