我正在为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)