IOS开发:引导页的实现

来源:互联网 发布:今日特惠淘宝优站 编辑:程序博客网 时间:2024/05/16 01:23
相信大家都看到过手机应用在启动的时候,都会有一个很漂亮的页面,在这个页面显示之后,如果你是第一次打开该应用还会有提示图片(如程序怎么使用等等),今天自己写了一个小demo 在此分享一下,可以给新学者一个参考

                            

             

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

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


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

  1.    Default.png  适配的是普通屏幕的iPhone手机  如iPhone4以前的
  2. Default@2x.png  适配的是Retina屏 的iPhone4s 
  3. Default-568@2x.png  适配的则是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 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; i<arr.count; i++) {              UIImageView *img=[[UIImageView alloc] initWithFrame:CGRectMake(i*320, 0, 320, self.window.frame.size.height)];              img.image=[UIImage imageNamed:arr[i]];              [scr addSubview:img];              [img release];          }      }      #pragma mark scrollView的代理      -(void)scrollViewDidScroll:(UIScrollView *)scrollView{          //这里是在滚动的时候判断 我滚动到哪张图片了,如果滚动到了最后一张图片,那么          //如果在往下面滑动的话就该进入到主界面了,我这里利用的是偏移量来判断的,当          //一共五张图片,所以当图片全部滑完后 又像后多滑了30 的时候就做下一个动作          if (scrollView.contentOffset.x>4*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里的方法 我仅写了如何去创建这个文件,至于其他的就要根据你的应用程序情况来写了, 

按照这个步骤 就可以简单的实现添加假引导页面了  















0 0