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

时间:2010-12-16 22:06:44

标签: iphone ipad retina-display

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

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

当我强制使用双刻度时,它的效果非常好(至少在模拟器中,我没有iPad可以测试)。

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

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

6 个答案:

答案 0 :(得分: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.

}

您可以在此处阅读更多内容http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/BuildTimeConfiguration/BuildTimeConfiguration.html

这是Apple推荐的方法

答案 1 :(得分:19)

如果应用程序是在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
}

答案 2 :(得分:1)

在文档中查找,UIDevice:

例如: NSString * system = [[UIDevice currentDevice] systemName];

然后使用[system isEqualToString:@“iPad”]无论是否是ipad。

UIDevice是一个非常好的类,它也有像multiTaskingSupported,systemVersion等的东西。得爱UIKit;)

答案 3 :(得分:0)

我认为是:

// Set hello to "Hello, <device or simulator>"!

如果是TARGET_IPHONE_SIMULATOR

NSString * hello = @“你好,iOS模拟器!”;

否则

NSString * hello = @“你好,iOS设备!”;

ENDIF

链接apple doc

答案 4 :(得分:0)

答案 5 :(得分:-3)

如果它是iPhone应用程序,那么你应该无法区分它,只要它可以告诉它在iPhone上运行。如果您想要定位iPad,那么您需要为iPad目标构建它。