可能重复:
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版本,以便我可以使用上面的代码?
答案 0 :(得分:50)
以下示例适用于任何版本号。例如:检测iOS 5而不是7,用代码中的5代替7。
这会检测您正在构建的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
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等),如果版本相同或更高,上面的所有内容都会正确报告。