项目遇到版本兼容问题,为了不影响已经测试稳定的版本,想针对有些系统版本单独给一套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的方法,还是可以用到其他场景的。^_^