iOS开发之首次启动引导页的两种处理方法简析
2016-02-29 11:24
387 查看
大多数iOS软件首次启动时都会有引导页,在开发过程中发现两种实现方式。
第一种,一个根视图,上面加一层蒙板,蒙板可以自定义类
第二种,网上常见解决方案,设置两个根视图,引导控制器结束后跳回主视图控制器
代码如下:
AppDelegate.m文件
#import "AppDelegate.h"
#import "ViewController.h"
#import "GuideViewController.h"
@interface
AppDelegate (){
UIView *topView;//第一种引导方式,引导页蒙板,自定义View类
}
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindowalloc]initWithFrame:[UIScreenmainScreen].bounds];
self.window.backgroundColor = [UIColorblueColor];
[self.windowmakeKeyAndVisible];
/**
* 第一种引导方式创建根视图和新的View,判断是否首次启动,引导结束移除新的View(简单粗暴)
*/
ViewController *viewController = [[ViewControlleralloc]init];
[self.windowsetRootViewController:viewController];
if (![[NSUserDefaultsstandardUserDefaults]
boolForKey:@"firstStart"]) {
[[NSUserDefaultsstandardUserDefaults]
setBool:YESforKey:@"firstStart"];
topView = [[UIViewalloc]initWithFrame:[UIScreenmainScreen].bounds];
topView.backgroundColor = [UIColoryellowColor];
UITapGestureRecognizer *click = [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(RemovetopView:)];
[topViewaddGestureRecognizer:click];
topView.userInteractionEnabled =YES;
[viewController.view
addSubview:topView];
}
/**
* 第二种引导方式判断是否首次启动,创建Controller并引导结束后跳转另一个Controller种引导方式创建根视图和新的View,判断是否首次启动,引导结束移除新的View(简单粗暴)
*/
if (![[NSUserDefaultsstandardUserDefaults]
boolForKey:@"firstStart"]) {
[[NSUserDefaultsstandardUserDefaults]
setBool:YESforKey:@"firstStart"];
GuideViewController *guideViewController = [[GuideViewControlleralloc]init];
self.window.rootViewController = guideViewController;
}else{
ViewController *viewController = [[ViewControlleralloc]init];
[self.windowsetRootViewController:viewController];
}
return
YES;
}
/**
* 第一种引导方式移除新的View方法
*/
-(IBAction)RemovetopView:(id)sender{
[UIViewanimateWithDuration:0.5animations:^{
[topViewremoveFromSuperview];
}];
}
引导视图控制器代码:
#import "GuideViewController.h"
#import "ViewController.h"
@interface
GuideViewController ()
@end
@implementation GuideViewController
- (void)viewDidLoad {
[superviewDidLoad];
self.view.backgroundColor = [UIColorpurpleColor];
UITapGestureRecognizer *click = [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(NextView:)];
[self.viewaddGestureRecognizer:click];
}
/**
* 第二种引导方法跳转主视图方法
*/
-(IBAction)NextView:(id)sender{
ViewController *newViewController = [[ViewControlleralloc]init];
[selfpresentViewController:newViewController
animated:YEScompletion:nil];
}
第一种,一个根视图,上面加一层蒙板,蒙板可以自定义类
第二种,网上常见解决方案,设置两个根视图,引导控制器结束后跳回主视图控制器
代码如下:
AppDelegate.m文件
#import "AppDelegate.h"
#import "ViewController.h"
#import "GuideViewController.h"
@interface
AppDelegate (){
UIView *topView;//第一种引导方式,引导页蒙板,自定义View类
}
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindowalloc]initWithFrame:[UIScreenmainScreen].bounds];
self.window.backgroundColor = [UIColorblueColor];
[self.windowmakeKeyAndVisible];
/**
* 第一种引导方式创建根视图和新的View,判断是否首次启动,引导结束移除新的View(简单粗暴)
*/
ViewController *viewController = [[ViewControlleralloc]init];
[self.windowsetRootViewController:viewController];
if (![[NSUserDefaultsstandardUserDefaults]
boolForKey:@"firstStart"]) {
[[NSUserDefaultsstandardUserDefaults]
setBool:YESforKey:@"firstStart"];
topView = [[UIViewalloc]initWithFrame:[UIScreenmainScreen].bounds];
topView.backgroundColor = [UIColoryellowColor];
UITapGestureRecognizer *click = [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(RemovetopView:)];
[topViewaddGestureRecognizer:click];
topView.userInteractionEnabled =YES;
[viewController.view
addSubview:topView];
}
/**
* 第二种引导方式判断是否首次启动,创建Controller并引导结束后跳转另一个Controller种引导方式创建根视图和新的View,判断是否首次启动,引导结束移除新的View(简单粗暴)
*/
if (![[NSUserDefaultsstandardUserDefaults]
boolForKey:@"firstStart"]) {
[[NSUserDefaultsstandardUserDefaults]
setBool:YESforKey:@"firstStart"];
GuideViewController *guideViewController = [[GuideViewControlleralloc]init];
self.window.rootViewController = guideViewController;
}else{
ViewController *viewController = [[ViewControlleralloc]init];
[self.windowsetRootViewController:viewController];
}
return
YES;
}
/**
* 第一种引导方式移除新的View方法
*/
-(IBAction)RemovetopView:(id)sender{
[UIViewanimateWithDuration:0.5animations:^{
[topViewremoveFromSuperview];
}];
}
引导视图控制器代码:
#import "GuideViewController.h"
#import "ViewController.h"
@interface
GuideViewController ()
@end
@implementation GuideViewController
- (void)viewDidLoad {
[superviewDidLoad];
self.view.backgroundColor = [UIColorpurpleColor];
UITapGestureRecognizer *click = [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(NextView:)];
[self.viewaddGestureRecognizer:click];
}
/**
* 第二种引导方法跳转主视图方法
*/
-(IBAction)NextView:(id)sender{
ViewController *newViewController = [[ViewControlleralloc]init];
[selfpresentViewController:newViewController
animated:YEScompletion:nil];
}
相关文章推荐
- iOS开发笔记--xcode7安装Alcatraz插件管理器
- iOS/mac开发的一些知名个人博客
- iOS学习笔记64-Apple Pay编程指南
- iOS开发多线程--技术方案
- iOS开发--完整项目
- mac开发与iOS开发的区别
- iOS下的 Fixed + Input 调用键盘的时候fixed无效问题解决方案
- iOS开发new与alloc/init的区别
- iOS之手动内存管理
- iOS原生的定位与地图归纳
- IOS-54-IOS开发中cookie的作用简介
- IOS 消息机制(NSNotificationCenter)
- iOS-子线程与主线程嵌套使用
- iOS开发学习之 - 初识调试(1)
- iOS开发文件夹--Copy items if needed
- iOS开发证书"此证书的签发者无效"解决方法
- Block循环引用进行弱处理
- ios卡牌游戏项目源码
- iOS开发-类的加载load函数和initialize函数
- H5与iOS交互