【问题标题】:Checking if device is iPad检查设备是否为 iPad
【发布时间】:2012-10-17 23:17:03
【问题描述】:

这段代码有什么问题?我希望能够检查用户当前使用的设备是否是 iPad,但它一直给我错误。

if (UIUserInterfaceIdiom == UIUserInterfaceIdiomPad)
{
    //do stuff
}

【问题讨论】:

  • 你可能想用不止 ipad 来标记它。
  • 也许你说得太晚了?你是手动加载你的XIB吗?我记得这样做并成功了。但我想还有更好的解决方案。

标签: iphone ios ipad user-interface ios6


【解决方案1】:

你可以使用

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)

【讨论】:

  • 请注意,UIUserInterfaceIdiomPhone 值并不一定意味着您使用的是 iPhone 设备 - 而是接口惯用语与 iPhone 设备匹配。您可能在 iPad 上以 1x/2x 模式运行仅适用于 iPhone 的应用程序。
  • 其实就是 UI_USER_INTERFACE_IDIOM()。
  • 这是一个有趣的岩浆点,感谢您引起我的注意。我不知道是这样的
【解决方案2】:

在 Swift 中你可以使用:

if UIDevice.current.userInterfaceIdiom == .pad {
    //do stuff
}

【讨论】:

    【解决方案3】:

    您必须检查设备是否为 iphone/ipad 的条件

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
        {
    //do ur  ipad logic
    }else
    {
    //do ur  iphone logic
    }
    

    【讨论】:

      【解决方案4】:

      如果你用的是 swift,就用这个

          if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.Pad)
          {
            // device is ipad
          }
          else
          {
              //  device is iPhone
          }
      

      【讨论】:

        【解决方案5】:

        /* UI_USER_INTERFACE_IDIOM() 函数用于部署到低于 3.2 的 iOS 版本时使用。如果您要为其部署的 iPhone/iOS 的最早版本是 3.2 或更高版本,您可以直接使用 -[UIDevice userInterfaceIdiom]。 */

        最好使用UIDevice.current.userInterfaceIdiom,除非你支持超级旧的iOS。

        可能的情况如下:

        public enum UIUserInterfaceIdiom : Int {
            case unspecified
        
            @available(iOS 3.2, *)
            case phone // iPhone and iPod touch style UI
        
            @available(iOS 3.2, *)
            case pad // iPad style UI
        
            @available(iOS 9.0, *)
            case tv // Apple TV style UI
        
            @available(iOS 9.0, *)
            case carPlay // CarPlay style UI
        }
        

        【讨论】:

          【解决方案6】:

          我的应用程序在 iPad 上作为 iPhone 专用应用程序运行,但我仍然需要检测设备是否为 iPad 以隐藏应用程序中与 Apple HealthKit 相关的某些功能,这些功能在 iPad 上不可用。我改用了这种方法。

          extension UIDevice {
              var isPad: Bool {
                  get {
                      return UIDevice.deviceInfo.lowercased().containsWord("ipados")
                  }
              }
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-11-12
            • 1970-01-01
            • 1970-01-01
            • 2012-11-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多