【问题标题】:How to check the device is iPhone 5? [duplicate]如何检查设备是 iPhone 5? [复制]
【发布时间】:2012-10-25 18:41:08
【问题描述】:

如何检查应用程序是否在 iPhone 5 上运行,然后执行某些操作?

【问题讨论】:

  • 您真的要检查 iPhone 5 还是需要检查 iPhone 5 和第 5 代 iPod touch 当前使用的 4" 屏幕?您打算如何利用这些知识? 答案将有助于指导最佳解决方案。
  • @ChrisLatta - 我搜索过,但我没有找到很抱歉,但这不是重复的。
  • @CroiOS 为什么不重复?

标签: iphone ios


【解决方案1】:
#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )

然后在代码中:

if (IS_IPHONE_5) { 
   //is iphone 5
}

【讨论】:

  • 与其他讨论一样,实际上没有必要检查 epsilon
【解决方案2】:

您可能关心的是窗口大小,而不是品牌/型号,这样就可以了:

CGRect screenRect = [[UIScreen mainScreen] applicationFrame];
if (screenRect.size.height == 568)
{
 // this is an iPhone 5+
}

【讨论】:

  • 此处缺少信息。 @property(nonatomic,readonly) CGRect 边界; // 以点为单位的整个屏幕边界 @property(nonatomic,readonly) CGRect applicationFrame; // 以点为单位的应用程序屏幕区域的框架(即整个屏幕减去状态栏,如果可见)
  • 这并不总是正确的,如果在您的应用程序状态栏可见,它的高度是 548。要使其始终等于 568,请使用 [[UIScreen mainScreen] bounds];而是。
【解决方案3】:

您可以通过检查屏幕分辨率来做到这一点,也可以使用:

#import "sys/utsname.h"

它为您提供每个设备的标识符。请在此处查看我的答案:recognize device

【讨论】:

    【解决方案4】:

    使用屏幕没问题。

    #define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    #define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
    #define IS_IPHONE_5 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 568.0f)
    

    不需要进行 epsilon 检查

    【讨论】:

      【解决方案5】:

      我们可以直接把这个方法放在常量文件中,可以在任何使用define的地方使用

      #define ISIPHONE5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )
      #define HEIGHT (ISIPHONE5 ? 60:145)
      

      或者可以使用

       #define IS_IPHONE5 (([[UIScreen mainScreen] bounds].size.height-568)?NO:YES)
      

      我们也可以通过下面的方式查看IOS

      #define IOS_OLDER_THAN_6 ([[[UIDevice currentDevice] systemVersion] floatValue] < 6.0 )
      #define IOS_NEWER_OR_EQUAL_TO_6 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 6.0 )
      

      【讨论】:

        【解决方案6】:

        您可以检查您设备的 iOS 版本,如果是 6.0 那么它是 iPhone 5.....

        这是代码..

        double osVersion = [[[UIDevice currentDevice] systemVersion] doubleValue];
        NSLog(@"OSVersion: %f", osVersion);
        if (osVersion == 6.0) 
        {
          //Paste your code here.....
        }
        

        【讨论】:

        • 这不是真的,iPhone 4s 或 iPhone 4 或 iphone 3gs 也有 ios 6.0...
        • 是的,很多iPad都是运行iOS6的,在通用应用的情况下也不是iPhone5设备。
        • 我希望你的日常工作!=“iOS 开发”
        • iOS版本不同,iPhone设备不同..
        • 深,欢迎来到 iPhone 开发...
        猜你喜欢
        • 2012-09-18
        • 2012-11-03
        • 1970-01-01
        • 2011-05-19
        • 2012-10-23
        • 1970-01-01
        • 1970-01-01
        • 2018-03-14
        相关资源
        最近更新 更多