检查设备是否运行iOS 5或更高版本

时间:2011-10-20 11:45:22

标签: ios xcode ios5

  

可能重复:
  Check iPhone iOS Version

iOS 5中的一项更改是能够覆盖drawrect方法。这意味着我需要以不同的方式更改navigationBar和tabBar的外观。我可以使用苹果新方法:

[[UINavigationBar appearance]setBackgroundImage:[UIImage imageNamed:@"navigationBarBackgroundRetro.png"] forBarMetrics:UIBarMetricsDefault];

//I create my TabBar controlelr
tabBarController = [[UITabBarController alloc] init];

// I create the array that will contain all the view controlers
[[UITabBar appearance] setBackgroundImage:
    [UIImage imageNamed:@"navigationBarBackgroundRetroTab.png"]];

[[UITabBar appearance] setSelectionIndicatorImage:
    [UIImage imageNamed:@"tab_select_indicator"]];

我正在为iOS 4.3和5.0开发一款应用。但是,iOS 5忽略了我覆盖的drawrect方法,所以它应该运行上面的代码。如何在iOS 5上查看iOS版本,以便我可以使用上面的代码?

1 个答案:

答案 0 :(得分:50)

以下示例适用于任何版本号。例如:检测iOS 5而不是7,用代码中的5代替7。

AvailabilityInternal.h宏

这会检测您正在构​​建的SDK:

#ifdef __IPHONE_7_0
  // iOS 7.0
#endif

这将在目标配置的“常规”选项卡中检测设置为“部署目标”的版本:

  #if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 
    // iOS 7.0 or later
  #else 
    // less than 7
  #endif

NSFoundation版本

BOOL isAtLeastIOS61 = NSFoundationVersionNumber >= NSFoundationVersionNumber_iOS_6_1;
BOOL isAtMost61 = NSFoundationVersionNumber <= NSFoundationVersionNumber_iOS_6_1;
BOOL is7x = floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1;

如果您点击NSFoundationVersionNumber,您将看到iOS和OSX的版本常量。总是缺少当前SDK的常量。

核心基础版

BOOL atLeastIOS61 = kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber_iOS_6_1;

NSFoundationVersionNumber一样,缺少SDK版本。

设备系统版本

NSString *version = [[UIDevice currentDevice] systemVersion];

BOOL isAtLeast6 = [version floatValue] >= 6.0;
BOOL isAtLeast7 = [version floatValue] >= 7.0;

另一种方式:

BOOL isAtLeast6 = [version hasPrefix:@"6."];
BOOL isAtLeast7 = [version hasPrefix:@"7."];

另一种方式:

BOOL isAtLeast6 = [version compare:@"6.0" options:NSNumericSearch] != NSOrderedAscending
BOOL isAtLeast7 = [version compare:@"7.0" options:NSNumericSearch] != NSOrderedAscending

如果担心浮动/字符串转换,请知道任何可能的iOS版本(6.0,6.0.1,6.1等),如果版本相同或更高,上面的所有内容都会正确报告。