检查设备是不是为 iPad
Posted
技术标签:
【中文标题】检查设备是不是为 iPad【英文标题】:Checking if device is iPad检查设备是否为 iPad 【发布时间】:2012-10-17 23:17:03 【问题描述】:这段代码有什么问题?我希望能够检查用户当前使用的设备是否是 iPad,但它一直给我错误。
if (UIUserInterfaceIdiom == UIUserInterfaceIdiomPad)
//do stuff
【问题讨论】:
你可能想用不止 ipad 来标记它。 也许你说得太晚了?你是手动加载你的XIB吗?我记得这样做并成功了。但我想还有更好的解决方案。 【参考方案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")
【讨论】:
以上是关于检查设备是不是为 iPad的主要内容,如果未能解决你的问题,请参考以下文章
如何在 xib 的 appdelegate 中检查设备是 ipad 还是 iphone?
如何在 iPad 中检查设备方向从纵向到横向和反之亦然的变化 [重复]
检查 Phonegap 应用程序是不是在 iPad 或 iPhone 上运行
如何检查 UIDocumentInteractionController 是不是由于 iPad 上缺少外部应用程序而无法打开文档?