2013-10-04 7 views

ответ

3

Вы можете получить версию IOS, используя этот код:

[[UIDevice currentDevice] systemVersion] 

Например, для обнаружения IOS 6, вы могли бы сделать что-то вроде:

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

Затем, чтобы загрузить различные раскадровки для прошивки 6 и 7, вы могли бы сделать что-то вроде:

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

EDIT:, как указано в других ответах, возможно, лучший способ обнаружить версию iOS - использовать NSFoundationVersionNumber, так как не требуется синтаксический анализ системы.

if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) { 
    myStoryboard = [UIStoryboard storyboardWithName:@"Storyboard_6" bundle:nil]; 
} else { 
    myStoryboard = [UIStoryboard storyboardWithName:@"Storyboard_7" bundle:nil]; 
} 
5
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) { 
    //load and show ios6 storyboard 
} 
else { 
    //load and show ios7 storyboard 
} 
+0

не работает должным образом на прошивке 6.1.3, так как для 6.1.3 IOS версии его плавающим значения является 993,0 и NSFoundationVersionNumber_iOS_6_1 - 992.0 сом для версии 6.1.3, вы сделаете НЕПРАВИЛЬНОЕ предположение, что это iOS 7 или выше –

+0

@NikolayShubenkov - Я взял этот код из руководства по переходу iOS7. (https://developer.apple.com/library/prerelease/ios/documentation/UserExperience/Conceptual/TransitionGuide/SupportingEarlieriOS.html#//apple_ref/doc/uid/TP40013174-CH14-SW1 –

+0

@NikolayShubenkov - интересно, что я вижу. .. #define NSFoundationVersionNumber_iOS_6_0 993.00 #define NSFoundationVersionNumber_iOS_6_1 993.00 в NSObjCRuntime.h –

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]]; 
} 
+0

Xcode, похоже, не знает, что такое NSFoundationVersionNumber_iOS_6_1. Он знает только до 5_1. Что с этим связано? –

+0

@Chase Robers Используйте iOS SDK 7 для этого NSFoundationVersionNumber_iOS_6_1 определяется только для IOS 7 SDK – DarthMike

+0

Мой mac слишком стар, чтобы позволить мне обновить ОС до минимальной версии, требуемой обновлением xcode, поэтому мне просто не повезло ... –

Смежные вопросы