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

我们只需要在一个类里面写好用户引导页面  基本上都是使用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. ASP.NET 5是如何通过XRE实现跨平台的

    挡不住的好奇心:ASP.NET 5是如何通过XRE实现跨平台的   .NET程序员也有自己的幸福,.NET的跨平台是一种幸福,.NET的开源也是一种幸福,而更幸福的是可以通过开源的.NET了解.NET ...

  2. linux通过建模工具Umbrello

    https://umbrello.kde.org/ Umbrello UML Modeller is a Unified Modelling Language (UML) diagram progra ...

  3. 腾讯QQ音乐网页版 音频初始化模块解压混淆js源码

    define("js/view/playerBar.js",function(t,e,o){ var i = t("js/lib/zepto.js"), a = ...

  4. leetcode[73] Set Matrix Zeroes 将矩阵置零

    给定一个矩阵,把零值所在的行和列都置为零.例如: 1 2 3 1 3 1 1 1 操作之后变为 1 3 0 0 0 1 1 方法1: 赋值另存一个m*n的矩阵,在原矩阵为零的值相应置新的矩阵行和列为零 ...

  5. mysql的事物

    所谓的事物就是一组原子性的SQL语句,或者说是一个独立的工作单元. 1.事物拥有四大特征: ①原子性(atomicity):一个事物必须被分为一个不可分割的的最小单元,整个事物中的所有操作要么全部提交 ...

  6. !DOCTYPE html文档类型声明简写 HTML5 DOCTYPE缩写

    html5之!DOCTYPE html文档类型声明简写,在HTML5中DOCTYPE简写非常重要. 一.概述   -   TOP 让CSS样式表生效,DOCTYPE声明是必须的,以前TABLE布局的网 ...

  7. Android项目---HtmlParse

    在解析网站上的内容的时候,总会出现很多html的标签,一般在遇到这种数据的时候,就可以用上Html 如: content.setText(Html.fromHtml("<html> ...

  8. Moq 测试 属性,常用方法

    RhinoMock入门(7)——Do,With和Record-playback 摘要: (一)Do(delegate)有时候在测试过程中只返回一个静态的值是不够的,在这种情况下,Do()方法可以用来在 ...

  9. String类重写

    #include <iostream> #include<string.h> using namespace std; class String { int length; i ...

  10. Oracle 高级查询、事物、过程及函数

    一.Sql函数 1.数值函数(输入参数和返回值都是数值型,多数函数精确到38位) --多少次方 ,) from dual; --开方 ) from dual; --绝对值 ) from dual; - ...