2014-09-28 150 views
14

我正在尝试为iPhone 6和6 Plus专门构建我的应用程序版本,而我没有任何硬件,我必须在模拟器上进行测试!但似乎,模拟器有一个奇怪的错误!第一,对于大多数我得到的屏幕分辨率和比例,通过这个代码:在模拟器上检测iPhone 6/Plus时出现问题

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 /加模拟器,编译器给我的iPhone 4" 显示的sceen信息:

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

但它正常工作的新项目(我不能创建一个新的项目,并重新开始! ) 我cleaned code,delete build folder,change project's name,并重置Simulator contents setting但仍然给我4“显示的信息! 。

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

+0

你在xcode 5中创建了这个项目,并在6中打开...对吗? – 2014-09-28 09:22:25

+0

@FahimParkar是的,我做到了! – 2014-09-28 09:23:48

+2

您是否尝试添加启动屏幕?即使是MainStoryboard也没问题。 – Phillip 2014-09-28 09:36:41

回答

21

我面对这个问题的主要原因是我建立我的应用程序与Xcode 5Xcode 6

解决方案打开:

添加启动图像视网膜HD 5.5和4.7:

enter image description here

现在,您可以在模拟器上检测到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) 
+0

兄弟同样的事情发生时,iPhone 5来...这是唯一的解决方案...但我忘了:D :) – 2014-09-28 11:19:56

+0

你需要添加图像的右大小,或者你必须使用启动屏幕http:// stackoverflow。 COM /问题/ 25754942 /如何对实现本机分辨率换应用上-iphone-6和6加 – onmyway133 2015-01-12 18:37:47

2

以防万一你需要在横向检测iPhone 6/6Plus,使用此。

#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) 
相关问题