17

可能重复:
如何检测 iPhone 5(宽屏设备)?

有没有办法可以检测当前设备是否是 iphone 5?更具体地说,如果它使用的是新的 4" 屏幕?

4

4 回答 4

44

用这个

#define IS_IPHONE5 (([[UIScreen mainScreen] bounds].size.height-568)?NO:YES)
于 2012-09-23T15:11:48.200 回答
17

我认为您应该专注于首选显示模式,而不是检测 iPhone5。谁知道 Apple 将制造什么设备,但如果您的软件支持该模式,它将是面向未来的。

BOOL isiPhone5 = CGSizeEqualToSize([[UIScreen mainScreen] preferredMode].size,CGSizeMake(640, 1136));

将来,人们可能希望即时更改首选显示模式。例如,将 AppleTV 从 720p 电视断开并插入 1080p,当然无需重新启动应用程序。

于 2012-09-21T17:48:52.247 回答
4

在您的初始化中添加此代码:

if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){
     if(UIScreenOverscanCompensationScale==1136/640){
             //move to your iphone5 storyboard
             [UIStoryboard storyboardWithName:(NSString *) bundle (NSBundle *)];
  }
     else{
             //move to your iphone4s storyboard
             [UIStoryboard storyboardWithName:(NSString *) bundle (NSBundle *)];
  }
}

这是我在这里的另一个问题中发布的答案。

于 2012-09-21T20:38:57.207 回答
2

将此代码添加到您的应用程序:

if ([UIScreen mainScreen].scale == 2.f && screenHeight == 568.0f)
    {// iPhone 5 code}
else
    {// previous version code}
于 2012-09-23T08:13:02.733 回答