【问题标题】:How to check if device is an iPad or iPhone not working如何检查设备是 iPad 还是 iPhone 不工作
【发布时间】:2018-04-09 02:50:17
【问题描述】:

我目前正在更新一个应用程序,我需要知道该应用程序是否正在 iPad 上使用。

我在网上查了一下,找到了下面的代码。我在 Xcode 中使用了 iPad 模拟器并运行了两个 if 语句。但是每当我运行代码时,什么都没有发生(打印消息不打印)此代码是否适用于模拟器还是我做错了什么?

当我检查它是否是 UIUserInterfaceIdiom.phone 时,打印语句会执行,但我在模拟器中使用的是 iPad。

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.pad){
        print("This is an iPad")
        redoButton.layer.position.y -= 500



    }

if UIDevice.current.userInterfaceIdiom == .pad{
        print("iPad True")
    }

谢谢

【问题讨论】:

  • 我认为第二个 if 语句应该用括号括起来。例如。 if (UIDevice.current.userInterfaceIdiom == .pad).
  • 您的应用是通用应用吗?您使用的是启动屏幕故事板吗?
  • @user7328702 不。Swift 不需要括号。
  • 仅供参考 - 您不应该根据设备类型做出布局决策。您应该根据视图大小做出决定。
  • 正如我所说,检查它是否是 iPad 是错误的解决方案。您的应用程序需要在许多不同尺寸的 iPhone 上运行。如果您将您的应用程序设为通用应用程序并完全支持 iPad,那么您可以使用相同的方法来处理不同尺寸的屏幕。此外,在 iPad 上,您应该支持多任务处理,这意味着您的应用程序的大小可以在运行时更改。这就是为什么您需要根据视图大小而不是设备类型来做出决定。

标签: ios swift uikit ios-simulator


【解决方案1】:
if UIDevice.current.userInterfaceIdiom == .pad {
    print("iPad")
}else{
    print("not iPad")
}

但您需要让您的应用成为通用应用。

【讨论】:

  • 严格来说,您不需要将其设为通用应用。这是一个好主意,因为它将为 iPad 用户提供更好的用户体验,但它需要做的只是支持 3.5 英寸手机。
【解决方案2】:

如果您想经常检查 iphone/ipad。使用下面的类

class Env {
  static var isIpad : Bool { return UIDevice.current.userInterfaceIdiom == .pad }
}

那你就可以这样使用了

if Env.isIpad { // Ipad } 
else { iphone } 

【讨论】:

  • 这不能回答问题。
  • @rmaddy 先生。它只是对已接受答案的增强。如果OP想经常检查。我应该删除它吗?
  • 答案应该首先回答问题。答案不应该只是另一个答案中的代码方便。所以是的,我会删除您的答案或更新它以完全回答问题并提供其他答案中没有的信息。
  • 是的,但无论如何,这是一个更清洁的解决方案......我说离开它。
【解决方案3】:

你可以使用:

如果 UIDevice.current.model == "iPad" {

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多