好久没写博客了,最近事情比较多,各种实验,各种考试。蛋疼阿...
今天忙里偷闲,又折腾了会ios。突然想起我正在做的那个客户端没有引导页,自己也没什么头绪,就去问了问群里的大牛们。
我是这样形容的:
有帅哥美女值班么...
像一些应用那样,第一次打开,有几张图片介绍应用使用方法,功能的那个。
要怎么实现?
然后邪恶哥就告诉我那玩意叫引导页,晓得术语后,我就自己百度去了,在code4app上找到了一份不错的demo。 也很方便。下面纪录下使用方法。
这里是code4app上的demo的下载链接。
http://code4app.com/ios/Introduction-Tutorial-View/5164359d6803fa8b1a000001
下载后,可以看看demo,很简单,我也是一看就懂。
下面说说我整合到我的项目中的方法。
1.把下载的demo中的
MYIntroductionView.h
MYIntroductionView.m
MYIntroductionPanel.h
MYIntroductionPanel.m
这四个文件,再加上一些图像资源加到你的工程中去。(之后如果要修改图像等资源只要在相应位置修改就好了。这里只是师范,没做修改)。
2.在你的主界面(打开应用显示的第一个界面)
在对应的.h文件中引入头文件并且设置协议。
如我的是 mainView.h
//
// mainView.h
// softwareApp
//
// Created by 余龙泽 on 13-9-27.
// Copyright (c) 2013年 余龙泽. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "MYIntroductionView.h"
@interface mainView : UITabBarController<MYIntroductionDelegate>
@end
3.在主界面对应的.m文件中加入如下代码。
如我的mainView.m
-(void)viewDidAppear:(BOOL)animated{
//读取沙盒数据
NSUserDefaults * settings1 = [NSUserDefaults standardUserDefaults];
NSString *key1 = [NSString stringWithFormat:@"is_first"];
NSString *value = [settings1 objectForKey:key1];
if (!value) //如果没有数据
{
//STEP 1 Construct Panels
MYIntroductionPanel *panel = [[MYIntroductionPanel alloc] initWithimage:[UIImage imageNamed:@"SampleImage1"] description:@"Welcome to MYIntroductionView, your 100 percent customizable interface for introductions and tutorials! Simply add a few classes to your project, and you are ready to go!"];
//You may also add in a title for each panel
MYIntroductionPanel *panel2 = [[MYIntroductionPanel alloc] initWithimage:[UIImage imageNamed:@"SampleImage2"] title:@"Your Ticket!" description:@"MYIntroductionView is your ticket to a great tutorial or introduction!"];
//STEP 2 Create IntroductionView
/*A standard version*/
//MYIntroductionView *introductionView = [[MYIntroductionView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) headerImage:[UIImage imageNamed:@"SampleHeaderImage.png"] panels:@[panel, panel2]];
/*A version with no header (ala "Path")*/
//MYIntroductionView *introductionView = [[MYIntroductionView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) panels:@[panel, panel2]];
/*A more customized version*/
MYIntroductionView *introductionView = [[MYIntroductionView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) headerText:@"MYIntroductionView" panels:@[panel, panel2] languageDirection:MYLanguageDirectionLeftToRight];
[introductionView setBackgroundImage:[UIImage imageNamed:@"SampleBackground"]];
//Set delegate to self for callbacks (optional)
introductionView.delegate = self;
//STEP 3: Show introduction view
[introductionView showInView:self.view];
//写入数据
NSUserDefaults * setting = [NSUserDefaults standardUserDefaults];
NSString * key = [NSString stringWithFormat:@"is_first"];
[setting setObject:[NSString stringWithFormat:@"false"] forKey:key];
[setting synchronize];
}
}
代码不难。
viewDidAppear是在视图即将显示时候调用的方法。 这里看头寻找沙盒中 is_first中是否有数据,如果没有,就说明是第一次运行程序,则显示引导页并且在沙盒对应位置写入数据。
如果有数据,就说明不是第一次运行,则跳过,不显示引导页。
很简单的操作。当然有更好的方法,也有更好的类库,这只是我个人选择的方法罢了。
学习的路上,与君共勉。
分享到:
相关推荐
APP首次使用时的引导页设置 github:https://github.com/potato512/SYGuideView
Demo介绍:封装新手引导页面,有镂空部分,附有描述,只显示一次,控制器调用简单。 实现思路:实现一个UIView,添加到keyWindow,通过设置其layer的mask属性来实现镂空区域。 开发语音:Objective-C。 CSDN博客...
APP功能: 1、本地照片批量导入存储 ...9、其他基本操作,如启动页、引导页、意见反馈等。 源码下载:https://github.com/TangledHusky/PictureHouseKeeper 开发语言: Objective-C
10 增加FLEX,在本地测试版本开启,FLEX是Flipboard官方发布的一组专门用于iOS开发的应用内调试工具,能在模拟器和物理设备上良好运作,而开发者也无需将其连接到LLDB/Xcode或其他远程调试服务器,即可直接查看或...
主要给大家介绍了关于iOS实现启动引导页与指纹解锁的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
实现的是一个关于启动页或者引导页的视频动画效果的实现过程,对于大家开发APP具有一定的参考借鉴价值,有需要的可以来看看。
Android APP引导页大全 Android Push it单机版事件管理APP Android RecycleView+任意头尾布局+拖拽换位+拖拽删除demo Android sql练习合集 Android 仿12306 Android 优秀计步器 Android 体重计算源码 Android 使用...
易于开发的网站,IOS应用程序,APK android都具有离子壮举的优势,当然也包括引导程序。 默认情况下,我们开发5个页面,您也可以根据需要添加新页面... 主页区域 关于页面 图库页面 我们开发的免费源代码项目...
jiaModuleDemo项目是为了解决关于项目中如何进行开发并编写实例的实例,包含如何进行路由式,本地模块间交互的实现;目前还是在页面层级进行抽离,对于项目中各个模块共有的基础功能也进行提取,可以结合私有Pods...
集成优雅的日志打印风格、app引导页面两行代码实现(也可用作轮播广告图,支持加载本地和网络,一键开启自动翻页功能,内设好几种翻页动画)、高仿iOS进度条和对话框、activity基类的封装(可继承自BaseActivity自行拓展...
项目开发会分博客文章,请点击链接到对应的文章中浏览,建议其实万变不离其中,说到底还是离不开原生,学习之前往补充原生知识,本片主要讲的是引导页,其中涉及到技术点层叠布局、相对定位、容器、定时器、异步数据...
集成优雅的日志打印风格、app引导页面两行代码实现(也可用作轮播广告图,支持加载本地和网络,一键开启自动翻页功能,内设好几种翻页动画)、高仿iOS进度条和对话框、activity基类的封装(可继承自BaseActivity自行拓展...
集成优雅的日志打印风格、app引导页面两行代码实现(也可用作轮播广告图,支持加载本地和网络,一键开启自动翻页功能,内设好几种翻页动画)、高仿iOS进度条和对话框、activity基类的封装(可继承自BaseActivity自行拓展...
最近项目需求是实现高亮功能引导页的效果,查了很多资料Android确实没有类似iOS的抠图的现成控件,就自己写一个,具体如下: Demo 代码 public class HighLightLayout extends FrameLayout { private Paint ...
1、本源码支持对接在线签名服务器版本,实现在线签名功能(需自行联系经营在线签名服务器的商家购买授权(域名授权+秘钥)实现对接 2、支持微信内扫码直接下载安装,具体效果请自行测试,以演示为准,如果后期微信...
扑ShuttleTracker是一个跨平台的端口利用颤振SDK进行开发。 展示柜 特征 地图页面包含班车,路线和站点的实时更新 路线页面,允许用户详细查看每条路线及其关联的站点 时间表页面,可将用户引导至所有路线的时间表 ...
新增iPhone和Android手机客户端下载地址可通过扫描二维码实现下载(更加方便的实现下载到手机了) 新增后台可设置附件类型 修复网站安全问题(感谢 秒杀@360 、 合肥滨湖虎子@360 的反馈) 修复发布某些字符的...
新增iPhone和Android手机客户端下载地址可通过扫描二维码实现下载(更加方便的实现下载到手机了) 新增后台可设置附件类型 修复网站安全问题(感谢 秒杀@360 、 合肥滨湖虎子@360 的反馈) 修复发布某些字符的...