0

我正在使用以下代码(在AppDelegate中)来检测设备是否是 iPhone 5

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

它总是返回假。这不是我第一次使用该代码。甚至返回 {320, 480} 的 NSLog

NSLog(@"%@",NSStringFromCGSize([[UIScreen mainScreen] bounds].size));

注意:该应用程序仅适用于 iPad,然后我将其设为通用。所以我将有 2 个故事板,这就是我需要检测代码的原因。

谢谢

4

7 回答 7

1

这应该工作伙伴,

 bool isiPhone5 = ([[UIScreen mainScreen] bounds].size.height == 568);

并确保您使用 4 英寸模拟器

在此处输入图像描述

于 2013-05-02T11:57:15.827 回答
0

要识别 iphone 5 试试这个

  if( [[UIScreen mainScreen]bounds].size.height == 568){

    //iphone 5 
 }
  else
 {
    // less than iphone 5 
 }
于 2013-05-02T11:52:11.170 回答
0

我使用了以下代码。你可以试试这个:

#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )

然后你可以这样做:

if (IS_IPHONE_5) {
    //Do your stuff
}

希望这可以帮助。

于 2013-05-02T11:54:36.193 回答
0
#define IS_iPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )

if(IS_iPHONE_5)
{
    //Do something
}
else
{

}
于 2013-05-02T11:54:44.973 回答
0

见下一个

if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPhone){
if( [[UIScreen mainScreen]bounds].size.height == 568){

  //iPhone5 Device
}
else
{
    // Normal iPhone device
}

}

编辑:看到相同的线程

于 2013-05-02T11:55:43.740 回答
0

试试这个

#include <sys/sysctl.h>

-(NSString *)getModel {
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *model = malloc(size);
sysctlbyname("hw.machine", model, &size, NULL, 0);
NSString *deviceModel = [NSString stringWithCString:model encoding:NSUTF8StringEncoding];
free(model);
return deviceModel;
}

这个链接应该有帮助

于 2013-05-02T12:00:51.047 回答
0

最后我想通了。

解决方案

因为该应用程序仅适用于 iPad ,所以项目中不存在Default-568h@2x.png 。所以添加后一切正常。

请注意,我不需要上面的代码,因为在 xcode 项目设置中使应用程序通用后,有一部分用于iPhone/iPod 部署信息配置(图标、mainStoryBorad、默认屏幕......),我可以在其中设置 iPhone5 故事板之后将其添加到项目中。

于 2013-05-02T12:42:30.863 回答