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)

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...