Xcode检测iOS版本并相应地显示故事板

时间:2013-10-04 16:23:37

标签: ios xcode storyboard ios7

我想向iOS6用户展示一个故事板,向iOS7用户展示另一个故事板。我怎么能这样做?

3 个答案:

答案 0 :(得分:5)

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
    //load and show ios6 storyboard
}
else {
    //load and show ios7 storyboard
}

答案 1 :(得分:3)

您可以使用以下代码获取iOS版本:

[[UIDevice currentDevice] systemVersion]

例如,要检测iOS 6,您可以执行以下操作:

if ([[UIDevice currentDevice].systemVersion hasPrefix:@"6"]) {
    // ...
}

然后,要为iOS 6和7加载不同的故事板,您可以执行以下操作:

if ([[UIDevice currentDevice].systemVersion hasPrefix:@"6"]) {
    myStoryboard = [UIStoryboard storyboardWithName:@"Storyboard_6" bundle:nil];
} else {
    myStoryboard = [UIStoryboard storyboardWithName:@"Storyboard_7" bundle:nil];
}

编辑:如其他答案中所述,检测iOS版本的一种可以说是更好的方法是使用NSFoundationVersionNumber,因为不需要对systemVersion进行字符串解析。

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
    myStoryboard = [UIStoryboard storyboardWithName:@"Storyboard_6" bundle:nil];
} else {
    myStoryboard = [UIStoryboard storyboardWithName:@"Storyboard_7" bundle:nil];
}

答案 2 :(得分:0)

你可以在AppDelegate中尝试这样的事情(非常重要)

 UIStoryboard *storyboard = nil; 
 if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) {
    storyboard =  [UIStoryboard storyboardWithName:@"iOS7_AND_ABOVE" bundle:[NSBundle mainBundle]];
 } else {
    storyboard =  [UIStoryboard storyboardWithName:@"iOS_below_7" bundle:[NSBundle mainBundle]];
 }