storyboard开发,根据系统版本选择不同的storyboard加载

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章