項目遇到版本兼容問題,爲了不影響已經測試穩定的版本,想針對有些系統版本單獨給一套UI。
給下思路:
新建一個storyboard,取個名稱Storyboard_new,copy原來MainStoryboard的內容到該storyboard,並進行修改。
假如如下代碼,來判斷和選擇加載:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
//判斷當前IOS系統版本,加載不同的storyboard,用於適配IOS5.0
float curSystemVersion = [[[UIDevice currentDevice] systemVersion] floatValue];
NSString *storyboardName = @"MainStoryboard";
if (curSystemVersion >= 5.0 && curSystemVersion < 6.0) {
storyboardName = @"Storyboard_new";
}
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle:nil];
self.window.rootViewController = [storyboard instantiateInitialViewController];
[self.window makeKeyAndVisible];
return YES;
}
可以實現根據不同版本加載不同的storyboard。
但是!
沒有解決我的核心問題:想同時在項目中使用IOS6以上的Autolayout特性,又兼容IOS6一下的AutoSize方式。
雖然有兩個storyboard,一個是use autolayout,一個不用auto layout,但是卻編譯不通過啊,這個是硬傷,沒法解決,唉。
當選擇Deployment Target爲5.0時,就報錯了:
這個問題還得尋求其他途徑解決,上面介紹的根據不同情況選擇加載storyboard的方法,還是可以用到其他場景的。^_^