这个功能的重点就是在如何判断应用是第一次启动的. 其实很简单

我们只需要在一个类里面写好用户引导页面  基本上都是使用UIScrollView 来实现,

新建一个继承于UIViewController的类 命名为 UserGuideViewController ,

在UserGuideViewController.m 写

- (void)viewDidLoad

{

[superviewDidLoad];

// Do any additional setup after loading the view.

self.view.backgroundColor = [UIColorredColor];

[selfinitGuide];//加载新用户指导页面

}

-(void)initGuide{

, , , )];

)];

[scrollView setPagingEnabled:YES];  //视图整页显示

, , , )];

[imageview setImage:[UIImage imageNamed:@"0.png"]];

[scrollView addSubview:imageview];

[imageview release];

, , , )];

[imageview1 setImage:[UIImage imageNamed:@"1.png"]];

[scrollView addSubview:imageview1];

[imageview1 release];

, , , )];

[imageview2 setImage:[UIImage imageNamed:@"2.png"]];

[scrollView addSubview:imageview2];

[imageview2 release];

, , , )];

[imageview3 setImage:[UIImage imageNamed:@"3.png"]];

imageview3.userInteractionEnabled = YES;    //打开imageview3的用户交互;否则下面的button无法响应

[scrollView addSubview:imageview3];

[imageview3 release];

UIButton *button = [UIButtonbuttonWithType:UIButtonTypeRoundedRect];//在imageview3上加载一个透明的button

[button setTitle:@"立即体验" forState:UIControlStateNormal];

[button , , , )];

[button addTarget:selfaction:@selector(firstpressed) forControlEvents:UIControlEventTouchUpInside];

[imageview3 addSubview:button];

[self.view addSubview:scrollView];

[scrollView release];

button.backgroundColor =[UIColorredColor];

}

//Button的方法  ViewController为 指导完之后 点击进入的主视图

- (void)firstpressed{

[selfpresentModalViewController:[[[ViewControlleralloc] init] autorelease] animated:YES];  //点击button跳转到根视图s

}

----------------------------------------------------------

AppDelegate.m 中的代码

#import "AppDelegate.h"

#import "ViewController.h"

@implementation AppDelegate

- (void)dealloc

{

[_window release];

//[_viewController release];

[super dealloc];

}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

self.window = [[[UIWindowalloc] initWithFrame:[[UIScreenmainScreen] bounds]] autorelease];

//判断是不是第一次启动

if (![[NSUserDefaultsstandardUserDefaults]boolForKey:@"firstLaunch"]) {

[[NSUserDefaultsstandardUserDefaults ]setBool:YESforKey:@"firstLaunch"];

NSLog(@"第一次启动");

//如果是第一次启动 使用UserGuideViewController

UserGuideViewController *userGUideViewController =[[UserGuideViewControlleralloc]init];

self.window.rootViewController =userGUideViewController;

[userGUideViewController release];

}

else{

NSLog(@"不是第一次启动");

//如果不是第一次启动使用应用的的主视图

ViewController *Vc = [[ViewControlleralloc] init];

self.window.rootViewController = Vc;

[Vc release];

}

self.window.backgroundColor = [UIColorwhiteColor];

[self.windowmakeKeyAndVisible];

return YES;

}


iOS-王云鹤 APP首次启动显示用户指导的更多相关文章

  1. iOS开发之应用首次启动显示用户引导

    这个功能的重点就是在如何判断应用是第一次启动的. 其实很简单 我们只需要在一个类里面写好用户引导页面  基本上都是使用UIScrollView 来实现, 新建一个继承于UIViewController ...

  2. iOS开发 首次启动显示用户引导,第二次启动直接进入App,UIScrollView,UIPageControl,NSUserDefaults

    首先创建一个引导图的控制器类 UserGuideViewController.h和UserGuideViewController.m #import <UIKit/UIKit.h> #im ...

  3. ios王云鹤--iPhone中,点击换行,键盘消失。

    1.要在声明文件中实现 UItextFieldDelegate 协议 2.在实现文件中实现 UItextFieldDelegate 协议 中键盘消失的方法即: -(BOOL)textFieldShou ...

  4. SharedPreference 存储小量数据,一般首次启动显示引导界面就用这个。

    写://添加一个SharedPreference并传入数据SharedPreference sharedPreferences = getSharedPreferences("share_d ...

  5. 自定义App首次启动引导页

    代码如下 #import"ZBGuidePageView.h" @interfaceZBGuidePageView()<UIScrollViewDelegate> @p ...

  6. iOS app 程序启动原理

    iOS app 程序启动原理 Info.plist: 常见设置     建立一个工程后,会在Supporting files文件夹下看到一个"工程名-Info.plist"的文件, ...

  7. iOS开发-UIApplication和App启动状态

    UIApplication简单从字面上了解就是应用程序,开发的时候有的时候会根据需要调用其中的方法,看起来不起眼,实际在iOS开发UIApplication提供了iOS程序运行期间的控制和协作工作.每 ...

  8. Appium 之处理首次启动手机App时的系统权限弹框

    一般首次启动一个手机App时都会有系统权限弹框,如下图所示: 权限弹窗上面的按钮都是固定的,只需要定位到“ALLOW”按钮,点击就可以了,代码如下: 这里主要用selenium里面的显示等待模块(We ...

  9. 怎样做一个iOS App的启动分层引导动画?

    一. 为什么要写这篇文章? 这是一个很古老的话题,从两年前新浪微博开始使用多层动画制作iOS App的启动引导页让人眼前一亮(当然,微博是不是历史第一个这个问题值得商榷)之后,各种类型的引导页层出不穷 ...

随机推荐

  1. 使用Net.Mail、CDO组件、JMail组件三种方式发送邮件

    原文:使用Net.Mail.CDO组件.JMail组件三种方式发送邮件 一.使用Net.Mail 需要服务器认证,大部分服务器端口为25. { MailMessage mailMsg = mailMs ...

  2. protobuf-net-data

    protobuf-net http://www.codeproject.com/Articles/642677/Protobuf-net-the-unofficial-manual https://g ...

  3. 算法如功夫——C++ 用递归函数计算n的阶乘n!

    算法如功夫,套路练久了,才干应用自如! 学功夫不能死练,知其所以然,取长补短! #include <iostream.h> int main(int argc, char* argv[]) ...

  4. [翻译]MEAN.IO与MEAN.JS的前世今生

    写在前面: 因为项目要求要学习mean,所以要从搭建环境开始,网上的教程不怎么多,但是感觉方法倒是不少,也没多想,就开始安装,运行起来发现怎么和安装教程中的目录结构不同? 想了好久,也翻看目录半天,总 ...

  5. 基于Asterisk的VoIP开发指南——(1)实现基本呼叫功能

    原文:基于Asterisk的VoIP开发指南--(1)实现基本呼叫功能 说明: 1.本文档探讨基于Asterisk如何实现VoIP的一些基本功能,包括基本呼叫功能的方案选取.主叫号码透传.如何编写As ...

  6. leetcode第35题--Valid Sudoku

    题目:Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could ...

  7. VS2010新建Web网站与新建Web应用程序的区别

    在Visual Studio 2010中,除了可以使用“创建Web应用程序”的方式来构建自己的Web项目之外,还可以通过创建“Web网站”的方式来构建Web项其中,Web网站的创建方法:打开Visua ...

  8. java中dao层的通用层,通过反射机制,操作数据库的增删改,适用的范围是不包含属性类

    这里首先必须注意的是:类的类名.字段必须与数据库中的表名和字段名保持一致,否则无法通过反射机制作出通用层 /** * 学生信息类,数据库中的StuInfo表 * */public class StuI ...

  9. MVC之验证

    MVC之验证 有时候我觉得,很多人将一个具体的技术细节写的那么复杂,我觉得没有必要,搞得很多人一头雾水的,你能教会别人用就成了,具体的细节可以去查MSDN什么的,套用爱因斯坦的名言:能在网上查到的就不 ...

  10. Mac OS X安装之虚拟机环境下的总结

    最近一直忙着公司iOS Touch的新版发布,终于忙过了.现在,又开始了新的阶段,不过算是轻松了很多.回来一看,自己的博客空空如也,实在受不了了.于是,开始更一下吧,哈哈. 这个文档是我几个月前,开始 ...