自定义启动页

1.启动页自定义

(1)AppDelegate
    /**定义defaults对象往plist文件添加数据*/
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
   
    /**定义bool变量 用key取值  默认为NO*/
    BOOL mark = [[defaults objectForKey:@"mark"] boolValue];
   
    /**为NO是程序第一次运行*/
    if (mark == NO) {
       
        /**写数据*/
        [defaults setBool:YES forKey:@"mark"];
       
        /**同步*/
        [defaults synchronize];

        /**改变windows主窗口为scrollView实现的滑动视图*/
        self.window.rootViewController = [[GuideViewController alloc] init];
       
    }else{
       
        /**如果为yes 说明不是第一次进入程序 那就进入欢迎界面*/
        self.window.rootViewController = [[LaunchViewController alloc] init];
       
    }

(2)欢迎页 每次打开程序都会显示


实现思路:
1.新建一个类带xib 继承于UIViewController
2.将28张图片用xib设置好并设置自动布局,所有view透明度设置为0
3.定义一个数组接受xib里的view  self.view.subviews就是数组(前提是要对图片view排好序)
4.定义一个方法对数组里的每个元素进行透明度恢复
   1.>定义一个成员变量index记录作为数组下标取值
   2.>先定义退出条件 如果定义的index等于数组的count就改变当前windows的主控制器并 retrun;
   3.>利用index从数组取元素,并执行动画改变其属性 alpha = 1;
  4.>执行完动画后让index++; 然后利用延迟调用递归调用这个方法(动画几秒 就延迟几秒)

实现代码:

@interface LaunchViewController ()
{
    int _index;
    NSArray *_images;
}

    _images = [self.view subviews];

   
    [self _initCtrl];
   

}

- (void)_initCtrl
{
   
   
    if (_index == _images.count) {
       
        self.view.window.rootViewController = [[RootTabBarController alloc] init];
       
        return;
       
    }
   
      UIImageView *image = _images[_index];
   
      [UIView animateWithDuration:.05 animations:^{
         
          image.alpha = 1;
         
      }];
   
    _index ++;
   
    [self performSelector:@selector(_initCtrl) withObject:self afterDelay:.05];
}



实现思路:
1.新建一个类继承于UIViewController
2.新建一个scrollView滑动视图
3.新建个数组存放这些图片的名字
4.用for循环将这些图片添加到滑动视图上
5.遵守 UIScrollViewDelegate协议实现实时监测视图滑动的代理方法
  在方法中判断如果滑动到了最后一张就跳转进程序

实现代码:

/**初始化启动页视图*/
- (void)_initView
{
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:[UIScreen mainScreen].bounds];
    [self.view addSubview:scrollView];
    scrollView.contentSize = CGSizeMake(ScreenW * 5, ScreenH);
    scrollView.pagingEnabled = YES;
    scrollView.delegate = self;

   
    NSArray *guideImages = @[@"guide1@2x",
                        @"guide2@2x",
                        @"guide3@2x",
                        @"guide4@2x",
                        @"guide5@2x",];
   
    NSArray *progressImages = @[@"guideProgress1@2x",
                                @"guideProgress2@2x",
                                @"guideProgress3@2x",
                                @"guideProgress4@2x",
                                @"guideProgress5@2x"];
   
    for (int i = 0; i < guideImages.count; i++) {
       
        UIImageView *image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:guideImages[i]]];
        image.frame = CGRectMake(i*ScreenW, 0, ScreenW, ScreenH);
        [scrollView addSubview:image];
       
        UIImageView *img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:progressImages[i]]];
        img.frame = CGRectMake((ScreenW - 86)/2.0, ScreenH - 13 - 30, 86, 13);
        [image addSubview:img];
    }
   
}


/**实时监测滑动视图滚动*/
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    RootTabBarController *root = [[RootTabBarController alloc] init];
   
    /**  scrollView的x偏移量 + 屏幕宽 = scrollView.contentSize  */
    /**  scrollView.contentSize.width -  scrollView.contentSize.width 就是目前多出来的的偏移量*/
    CGFloat offset =(scrollView.contentOffset.x + ScreenW) - scrollView.contentSize.width;
   
    /**判断滑动多少 该进入程序了*/
    if (offset > 30) {
       
        self.view.window.rootViewController = root;
       
    }
   
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值