检测ios app是否在iPhone,iPhone Retina显示器或iPad上运行的代码是什么?
背景:
我的iPhone应用程序我已在XCode目标/摘要页面中定义了特定图像:iPhone启动图像,iPhone视网膜显示启动图像,iPad肖像& iPad风景。
在主视图中有一个用于背景图像的UIImageView子视图 - 目前我在XCode(非编程)中通过选择我用于iPhone启动图像的图像来指定它。
所以我问如何判断我在哪一个运行,以便在viewDidLoad中我可以加载适当的分辨率背景图像。然后应用程序启动的背景图像与应用程序主屏幕启动后的背景应该是无缝过渡。
答案 0 :(得分:18)
您可以使用[[UIDevice currentDevice] userInterfaceIdiom]
来确定您是在iPhone / iPod touch还是iPad上运行。
通常无需直接确定您是否在视网膜显示器上,因为UIImage
在您使用imageNamed
时自动处理并将“@ 2x”附加到您的高分辨率图像文件名称(请参阅iOS版绘图和打印指南中的Supporting High-Resolution Screens。
如果您确实需要知道屏幕的分辨率,请使用UIScreen
的{{1}}方法。
答案 1 :(得分:8)
以下是我使用的两种有用的类方法,它直接回答了您的问题 - 您可能希望进一步使用该方法:
+(BOOL)isPad
{
#ifdef UI_USER_INTERFACE_IDIOM
return UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad;
#endif
return NO;
}
+(BOOL)hasRetinaDisplay
{
// checks for iPhone 4. will return a false positive on iPads, so use the above function in conjunction with this to determine if it's a 3GS or below, or an iPhone 4.
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2)
return YES;
else
return NO;
}
答案 2 :(得分:1)
对于Swift解决方案:
if (UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Pad)
{
// Ipad
}
else
{
// Iphone
}
答案 3 :(得分:0)
请参阅@interface UIDevice
以及-[UIImage scale]
处的文档(虽然有更好的资源,可能会发布)。
答案 4 :(得分:0)
以下是一些要复制和粘贴的代码......
bool runningOniPhone;
if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){
runningOniPhone = TRUE;
} else {
runningOniPhone = FALSE;
}