在app中添加新手引导视图
原理是用NSUserDefaults来判断是否是第一次启动,如果是第一次启动,则在当前页面添加启动画面。
首先是AppDelegate:
- (BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
if(![[NSUserDefaultsstandardUserDefaults]boolForKey:@"everLaunched"]){
[[NSUserDefaultsstandardUserDefaults]setBool:YESforKey:@"everLaunched"];
[[NSUserDefaultsstandardUserDefaults]setBool:YESforKey:@"firstLaunch"];
NSLog(@"first launch");
}else{
[[NSUserDefaultsstandardUserDefaults]setBool:NOforKey:@"firstLaunch"];
NSLog(@"second launch");
}
returnYES;
}
解释一下StoryBoard的配置,GuideVC是新手引导的ViewController,而ViewController是初始界面,即IntialViewController。第三个未设置控制器。
在GuideVC中,需要写入动画代码,通常是PageControl加几幅图,在此略过,只是加一个button,而且是直接用segue到初视图。
关键部分代码如下:
ViewController.h:
#imp
@classGuideVC;
@interfaceViewController :UIViewController
@property(strong,nonatomic)GuideVC*guideVC;
@end
ViewController.m:
-(void)viewWillAppear:(BOOL)animated
{
if([[NSUserDefaultsstandardUserDefaults]boolForKey:@"firstLaunch"]){
[[NSUserDefaultsstandardUserDefaults]setBool:NOforKey:@"firstLaunch"];
self.guideVC=[self.storyboardinstantiateViewControllerWithIdentifier:@"guide"];
UIView *guideView=self.guideVC.view;
CGRect switchViewFrame=guideView.frame;//得到frame
switchViewFrame.origin.y=0; //将推入视图的y值设置为0,目的是防止出现视图加载下移的情况
guideView.frame=switchViewFrame;
[self.viewinsertSubview:guideViewaboveSubview:self.view];
}
else
{
}
}
转载自:http://yul100887.blog.163.com/blog/static/20033613520147274371897/