我们在移动应用开发中经常会应用到启动页与引导页,为了实现启动页与引导页,以及应用功能界面的无缝连接,今天我来分享一下自己在开发中所用到的相关方法,抛砖引玉!
1.创建一个UIViewController作为启动页,在上面实现启动页的效果
2.创建另一个控制器,在里面实现引导页的效果
3.创建一个tabbar作为应用的功能性tabbar
4.创建一个单例类来管理根控制器的切换
第一步:从服务器获取启动图,并将得到的结果存入单例类模型中;
第二步:调用根控制器的管理类单例的方法,将启动页设为根控制器,并创建定时器更换根按制器,代码如下:
-(void)setRootViewControllerWithWindow:(UIWindow *)window{
self.window=window;
CYStartPageViewController * startVC=[[CYStartPageViewController alloc]init];
self.window.rootViewController=startVC;
window.backgroundColor = [UIColor whiteColor];
[window makeKeyAndVisible];
self.startTimer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(removeStartView) userInfo:nil repeats:NO];
}
第三步:定时器方法,在本地保存沙盒“firstStart”,实现第一次启动进入引导页,更换根控制器结束后销毁定时器,记得在第一次启动时保存当前版本号,代码如下:
-(void)removeStartView
{
if ([[NSUserDefaults standardUserDefaults] objectForKey:@"firstStart"]) {
//非第一次启动
UIStoryboard *storybard = [UIStoryboard storyboardWithName:@"Home" bundle:nil];
XDTabBarController *tabBarController = [storybard instantiateViewControllerWithIdentifier:@"XDTabBarControllerID"];
self.window.rootViewController = tabBarController;
}else{//第一次启动
// 进入新特性界面
// 如果有新特性,进入新特性界面
CZNewFeatureController *vc = [[CZNewFeatureController alloc] init];
self.window.rootViewController = vc;
[[NSUserDefaults standardUserDefaults] setObject:@"firstStart" forKey:@"firstStart"];
// 1.获取当前的版本号
NSString *currentVersion = [NSBundle mainBundle].infoDictionary[@"CFBundleVersion"];
//保存当前版本号
[[NSUserDefaults standardUserDefaults] setObject:currentVersion forKey:CZVersionKey];
[[NSUserDefaults standardUserDefaults] synchronize];
}
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
//
[self.startTimer invalidate];
self.startTimer = nil;
}
第四步:引导页结束后,更换根控制器为tabbar,代码如下:
-(void)firstSetRootViewControllerWithWindow:(UIWindow *)window{
UIStoryboard *storybard = [UIStoryboard storyboardWithName:@"Home" bundle:nil];
XDTabBarController *tabBarController = [storybard instantiateViewControllerWithIdentifier:@"XDTabBarControllerID"];
window.rootViewController = tabBarController;
window.backgroundColor = [UIColor whiteColor];
[window makeKeyAndVisible];
}
通过以上方法实现了第一次启动应用和后续使用应用的启动页,引导页与功能界面部分的无缝连接,那么当有版本更新时,我们要怎么办呢,其实很简单。
首先我们通过如下接口获取应用信息:
NSString *versionUrl = @"https://itunes.apple.com/cn/lookup?id=****";
其中id为应用的AppleID
通过获取市场上的版本号与之前保存在本地的版本号比较即可得知是否有更新,如两者不同,则说明有更新,此时,删除沙盒[[NSUserDefaults standardUserDefaults] setObject:@"firstStart" forKey:@"firstStart"];
再调用方法-(void)setRootViewControllerWithWindow:(UIWindow *)window即可
这样我们就实现了启动页,引导页,功能界面在首次启动,正常启动,与更新后的无缝显示连接!
请指教!
网友评论