我有一个opengl应用程序在RetinaDisplay模式下呈现更好(双倍比例因子),我注意到iPad模拟了一个低分辨率屏幕(正常比例因子)的iPhone应用程序。
我希望在我的iPhone应用程序在iPad上运行时将比例因子加倍,以便从Retina Display图形中受益。但似乎iPad真的很好用iPhone(如果它只是Retina显示器那将是完美的......)
当我强制使用双刻度时,它的效果非常好(至少在模拟器中,我没有iPad可以测试)。
所以我需要一种方法来了解我是否在iPad上运行,尽管有许多事情告诉我它是一部旧iPhone。
或许我不应该尝试这样做?
答案 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.
}
这是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>"!
NSString * hello = @“你好,iOS模拟器!”;
NSString * hello = @“你好,iOS设备!”;
答案 4 :(得分:0)
答案 5 :(得分:-3)
如果它是iPhone应用程序,那么你应该无法区分它,只要它可以告诉它在iPhone上运行。如果您想要定位iPad,那么您需要为iPad目标构建它。