iOS启动时如何添加引导页面 (更新)

           相信大家都看到过手机应用在启动的时候,都会有一个很漂亮的页面,在这个页面显示之后,如果你是第一次打开该应用还会有提示图片(如程序怎么使用等等),今天自己写了一个小demo 在此分享一下,可以给新学者一个参考

===========================我是华丽丽的分割线==================================================================

分割线内为最新的加入引导页的办法,之前的是刚刚接触ios 时自己写的,有很多的不足,在此在提供一种比较完善的方法,供大家参考

此处 是自己封装了一个独立的引导页,在任何项目中均可独立引用

首先看.h

#import 

/**
 *  App首次开机引导页
 */
@interface GuideView : UIScrollView

@end


接着.m

#import "GuideView.h"

/**
 *  引导页张数
 */
#define DEF_GUIDE_COUNT 3

@implementation GuideView

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) 
    {
        self.bounces=NO;
        self.contentSize = CGSizeMake(DEF_WIDTH(self)*DEF_GUIDE_COUNT, DEF_HEIGHT(self));
        self.backgroundColor = [UIColor blackColor];
        self.showsHorizontalScrollIndicator = NO;
        self.pagingEnabled = YES;
        self.delegate=self;
        self.backgroundColor = [UIColor clearColor];
       
        for (int i=0; iDEF_SCREEN_WIDTH*3+20) {
        [UIView animateWithDuration:0.3 animations:^{
            self.alpha = 0.0;
        } completion:^(BOOL finished) {
            [self removeFromSuperview];
        }];

    }
}
#pragma mark - 点击事件

- (void)beginClick
{
    self.userInteractionEnabled = NO;
    [UIView animateWithDuration:0.3 animations:^{
        self.alpha = 0.0;
    } completion:^(BOOL finished) {
        [self removeFromSuperview];
    }];
}

引导页上 有的是点击的,有的是需要滑动进入主页的,这两个根据自己的需求来,例子中这两种情况都满足,具体的还得根据自己的需求来,


使用方法也十分简单

 //引导页
    if (![DEF_PERSISTENT_GET_OBJECT(@"showGuide") boolValue])
    {
    [self makeui];
        DEF_PERSISTENT_SET_OBJECT([NSNumber numberWithBool:YES], @"showGuide");
        GuideView *guide = [[GuideView alloc] initWithFrame:self.window.bounds];
        [self.window addSubview:guide];
    }

/**

 * 取出永久存储的对象

 *

 * @param key    所需对象对应的key

 * @return key所对应的对象

 */

#define DEF_PERSISTENT_GET_OBJECT(key) [[NSUserDefaults standardUserDefaults] objectForKey:key] 


这是我自己定义的一个宏 用来本地化的  


===========================我是华丽丽的分割线==================================================================


iOS启动时如何添加引导页面 (更新)_第1张图片                             

              

  以上就是在Xcode中如何找到设置引导页面的位置

    对于图片的设置大家可以看到图中有2x  和R4 两种,对于这两种类型的区别如下


    R4 代表的是Retina屏幕也就是高清屏,那么这里我们选择的引导图片,一般情况下,在工程中如果有[email protected] 或者是Default.png 或者是[email protected],这样的图片,那么这个图片就会默认设置为我们程序的引导图片 ,那么这三种图片的区别如下

  1.    Default.png  适配的是普通屏幕的iPhone手机  如iPhone4以前的
  2. [email protected]  适配的是Retina屏 的iPhone4s 
  3. [email protected]  适配的则是iPhone5 5c 5s 
对于iPhone6的引导页面图片格式,我还不知道(如果您知道可以补充哦)

   以上都是在Xcode内设置的,那么就像文章开头所说的,我们每次第一次启动程序除了引导页面图片外 还有提示如何使用这个程序的页面或者其他,然后才会进入主界面,那么如果是这样 这个假引导页面(我自己给起得名字)该怎么设定呢  通过我自己写得小demo来展示一下  


   思路: 像上面的页面 我们都知道只有应用在第一次打开的时候才会出现,因此我利用的是在本地沙盒里创建一个文件,第一次进入的时候,沙盒里是没有这个文件的,因此程序进入出现了这个假引导页面,然后进入主程序,紧接着创建这个文件,等我第二次在启动这个程序的时候我就判断沙盒里面有没有这个文件,如果有那么我就直接进入主页面,这样就达到了 我想要的效果了 

 
//这是直接在AppDelegate里写的
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
   
    isOut =NO;
    //在沙盒做一个文件,判断沙盒有没有这个文件
    
    NSFileManager *manager=[NSFileManager defaultManager];
    
    BOOL isHasFile=[manager fileExistsAtPath:[NSHomeDirectory() stringByAppendingString:@"aa.txt"]];
    
    if (isHasFile) {
        [self gotoMain]; //为真表示已有文件 曾经进入过主页
    }else{
        [self makeLaunchView];//为假表示没有文件,没有进入过主页
    }
    [self.window makeKeyAndVisible];
    
    return YES;
}
//假引导页面
-(void)makeLaunchView{
    NSArray *arr=[NSArray arrayWithObjects:@"helpphoto_one.png",@"helpphoto_two.png",@"helpphoto_three.png",@"helpphoto_four.png",@"helpphoto_five.png", nil];//数组内存放的是我要显示的假引导页面图片
    //通过scrollView 将这些图片添加在上面,从而达到滚动这些图片
    UIScrollView *scr=[[UIScrollView alloc] initWithFrame:self.window.bounds];
    scr.contentSize=CGSizeMake(320*arr.count, self.window.frame.size.height);
    scr.pagingEnabled=YES;
    scr.tag=7000;
    scr.delegate=self;
    [self.window addSubview:scr];
    for (int i=0; i4*320+30) {
        
        isOut=YES;//这是我声明的一个全局变量Bool 类型的,初始值为no,当达到我需求的条件时将值改为yes
        
    }
}
//停止滑动
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
   //判断isout为真 就要进入主界面了
    if (isOut) {
        //这里添加了一个动画,(可根据个人喜好)
      [UIView animateWithDuration:1.5 animations:^{
          scrollView.alpha=0;//让scrollview 渐变消失
         
      }completion:^(BOOL finished) {
          [scrollView  removeFromSuperview];//将scrollView移除
          [self gotoMain];//进入主界面

      } ];
    }
  
}

//去主页
-(void)gotoMain{
    //如果第一次进入没有文件,我们就创建这个文件
    NSFileManager *manager=[NSFileManager defaultManager];
   //判断 我是否创建了文件,如果没创建 就创建这个文件(这种情况就运行一次,也就是第一次启动程序的时候)
    if (![manager fileExistsAtPath:[NSHomeDirectory() stringByAppendingString:@"aa.txt"]]) {
        [manager createFileAtPath:[NSHomeDirectory() stringByAppendingString:@"aa.txt"] contents:nil attributes:nil];
   }
    
}

   这里 主页里
-(void)gotoMain里的方法 我仅写了如何去创建这个文件,至于其他的就要根据你的应用程序情况来写了,
按照这个步骤 就可以简单的实现添加假引导页面了 
 
  

iOS启动时如何添加引导页面 (更新)_第2张图片
如上得图片 就是我的假引导页面的第一张图片


  

      

你可能感兴趣的:(方法,iOS开发小技巧)