2

iOS6 ユーザーに 1 つのストーリーボードを表示し、iOS7 ユーザーに別のストーリーボードを表示したいと考えています。これどうやってするの?

4

3 に答える 3

5
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
    //load and show ios6 storyboard
}
else {
    //load and show ios7 storyboard
}
于 2013-10-04T16:31:59.933 に答える
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 のバージョンを検出するための間違いなくより良い方法は、systemVersion の文字列解析が必要ないため、NSFoundationVersionNumber を使用することです。

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
    myStoryboard = [UIStoryboard storyboardWithName:@"Storyboard_6" bundle:nil];
} else {
    myStoryboard = [UIStoryboard storyboardWithName:@"Storyboard_7" bundle:nil];
}
于 2013-10-04T16:29:39.893 に答える
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]];
 }
于 2013-10-04T16:32:06.120 に答える