如何检测我的iPhone应用程序正在iPad上运行

teu*_*oui 2 iphone ipad retina-display

我有一个opengl应用程序在RetinaDisplay模式下呈现更好(双比例因子),我注意到iPad模拟了一个低分辨率屏幕(正常比例因子)的iPhone应用程序.

我想在我的iPhone应用程序在iPad上运行时将比例因子加倍,以便从Retina Display图形中受益.但似乎iPad真的很好伪造成iPhone(如果它只是一个Retina显示器那将是完美的......)

当我强制双重刻度时,它的效果非常好(至少在模拟器中,我没有iPad来测试).

所以我需要一种方法来了解我是否在iPad上运行,尽管很多事情告诉我它是一部旧iPhone.

或者也许我不应该尝试这样做?

she*_*ein 20

如果您只想为iPad制作自定义代码(很可能是自定义UI相关方法),那么您可以使用(如Apple指示)iOS 3.2及更高版本中存在的UI_USER_INTERFACE_IDIOM()方法

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
    // The device is an iPad running iPhone 3.2 or later.
}
else
{
    // The device is an iPhone or iPod touch.

}
Run Code Online (Sandbox Code Playgroud)

您可以在这里阅读更多信息http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/BuildTimeConfiguration/BuildTimeConfiguration.html

这是Apple推荐的方法


mpa*_*zer 20

如果该应用程序是在iPad上以模拟器模式运行的iPhone应用程序,则它将具有Phone的userInterfaceIdiom,但是具有iPad的型号类型.您可以使用以下代码进行检查:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone &&
    [[[UIDevice currentDevice] model] hasPrefix:@"iPad"]) {
    // This app is an iPhone app running on an iPad
}
Run Code Online (Sandbox Code Playgroud)

  • 正是我在寻找的!谢谢迈克尔 (2认同)
  • 和 peetonn,他说的是一个非通用 iPhone 专用应用程序,在 ipad 上以经典(1X / 2X)模式运行 (2认同)
  • 我想知道为什么这个答案不是被接受的答案,而没有解决问题的答案却是被接受的答案。 (2认同)