ios – 在模拟器上检测iPhone 6 / Plus有问题

我正在为iPhone 6和6 Plus专门制作我的应用程序版本,而我没有任何硬件,我必须在模拟器上测试!但似乎模拟器有一个奇怪的bug!首先,最多我得到屏幕分辨率和比例,通过这段代码:
UIScreen *mainScreen = [UIScreen mainScreen];
NSLog(@"Screen bounds: %@,Screen resolution: %@,scale: %f,nativeScale: %f",NSStringFromCGRect(mainScreen.bounds),mainScreen.coordinateSpace,mainScreen.scale,mainScreen.nativeScale);

所以这里是如何检测iPhone 6和6Plus(肖像模式):

#define iPhone6 ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && [UIScreen mainScreen].bounds.size.height == 667)

#define iPhone6Plus ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && [UIScreen mainScreen].bounds.size.height == 736)

问题是 !当我在iPhone6 / Plus模拟器上午餐我的应用程序,编译器给我的iPhone 4“显示屏的信息:

2014-09-28 12:32:08.153 WOD[2924:42290] 
Screen bounds: {{0,0},{320,568}},Screen resolution: <UIScreen: 0x7fa15be0f9b0; bounds = {{0,568}}; mode = <UIScreenMode: 0x7fa15bd0d4a0; 
size = 640.000000 x 1136.000000>>,scale: 2.000000,nativeScale: 2.000000

但它在新项目上工作正常! (我不能创建一个新的项目,重新开始!).
我清理代码,删除构建文件夹,更改项目名称,并重置模拟器内容设置,但仍给我4“显示!

我已经检查了这个Q/A,但答案需要一个真正的设备!

解决方法

我遇到这个问题的主要原因是我用Xcode 5构建我的应用程序,并用Xcode 6打开它

解决方案:

为Retina HD 5.5和4.7添加启动映像:

现在,您可以在没有真实设备的情况下在模拟器上检测iPhone 6 / Plus:

#define iPhone6 ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && MAX([UIScreen mainScreen].bounds.size.height,[UIScreen mainScreen].bounds.size.width) == 667)
 #define iPhone6Plus ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && MAX([UIScreen mainScreen].bounds.size.height,[UIScreen mainScreen].bounds.size.width) == 736)

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...