是iPhone 5总是返回False

时间:2013-05-02 11:46:43

标签: iphone ios objective-c iphone-5 ios-universal-app

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

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

它总是返回false。这不是我第一次使用该代码。如果NSLog返回{320,480}

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

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

由于

7 个答案:

答案 0 :(得分:1)

这应该是伙伴,

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

并确保使用4英寸模拟器

enter image description here

答案 1 :(得分:0)

识别iphone 5试试这个

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

    //iphone 5 
 }
  else
 {
    // less than iphone 5 
 }

答案 2 :(得分:0)

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

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

然后你可以这样做:

if (IS_IPHONE_5) {
    //Do your stuff
}

希望这有帮助。

答案 3 :(得分:0)

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

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

}

答案 4 :(得分:0)

见下面

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

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

}

编辑:see same thread

答案 5 :(得分: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;
}

Link应该有帮助

答案 6 :(得分:0)

最后我弄清楚了。

<强>解决方案

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

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