iOS--应用首次启动的引导页

昨天,弄了一早上和半个下午的Source Tree,网速成为了阻止我前进的最大障碍,果然想起了前段时间看到一篇文章(主要讲到程序员的装备),其中有一项就是高速的网络环境,经过昨天,深深体会到这句话。

好了,扯远了,回来。昨天下午网上无意间看到了某大虾的引导页的分享,想着前段时间做的项目也又一个引导页的模块,之前做得不太满意,就想着再自己学习下实现方法。示例链接:https://github.com/gaussli/SlideStartUpTest

建立项目导入图片神马的就不说了,看看MainViewController.h。

 1. 由于是首次启动的引导页,所以第二次打开的时候就不应该再显示了,于是我把是否第一次打开的标识位放在了NSUserDefaults中。

// 获得滑动图是否出现过标识位,出现过就不再出现,没出现过证明应用第一次打开,同时打开滑动图
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    if (![@"YES" isEqualToString:[userDefaults objectForKey:@"isShowScrollView"]]) {
        [self showScrollView];
    }
    else {
        NSLog(@"滑动图已经出现过,进行其他操作。");
    }

2. 引导页我是使用UIScrollView来展示图片,使用UIPageControl来显示当前是第几页。

其中需要设置UIScrollView的几个属性:

a. contentSize:设置UIScrollView的大小,包含所有的引导图,本示例中共5张,所以宽度width为5倍的屏幕宽,高度为屏幕高

b. pagingEnabled:设置翻页的效果,如果不设置的话,不能做成一页页翻的效果,只能连续滚动

c. bounces:设置是否允许反弹,这个属性为NO的时候,当滚动到UIScrollView边缘的时候不会出现反弹的动画效果,YES的时候,则会出现反弹效果。这个属性看个人意愿,想多点动画效果,就设置为YES,反之为NO。(默认值为YES)

d. showsHorizontalScrollIndicator:设置是否显示水平滚动条,在本示例中,由于是启动引导页,不应该有水平滚动页,所以设置为NO

    // 初始化scrollView
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:[UIScreen mainScreen].bounds];
    // 根据图片张数确定scrollView的大小位置,这里有5张图片,长度为屏幕宽度*5
    scrollView.contentSize = CGSizeMake(JH_DEVICE_WIDTH*5, JH_DEVICE_HEIGHT);
    scrollView.tag = 101;
    // 设置翻页效果,为一页一页翻
    scrollView.pagingEnabled = YES;
    // 设置不允许反弹
    scrollView.bounces = NO;
    // 设置不显示水平滑动条
    scrollView.showsHorizontalScrollIndicator = NO;
    // 设置代理为自身
    scrollView.delegate = self;


3. 把图片加入到UIScrollView中,注意每张图片的起始坐标和大小,这里放出添加第一张图片的代码:

    // 把图片加入到scrollView中
    UIImageView *imageView1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"wm.png"]];
    imageView1.frame = CGRectMake(0, 0, JH_DEVICE_WIDTH, JH_DEVICE_HEIGHT);
    [scrollView addSubview:imageView1];


4. 设置UIPageControl,用于显示当前第几张图片,只需要设置其中的一个参数numberOfPages:一共展示的图片数目

    // 初始化pageControl
    UIPageControl *pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(140, JH_DEVICE_HEIGHT - 60, 50, 40)];
    pageControl.numberOfPages = 5;
    pageControl.tag = 201;

至此,页面的初始化已经完成,接下来进行UIScrollView的代理设置。

5. 实现- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView,这是当滑动减速到结束时回调的代理,在这里面设置UIPageControl显示的页数

    // 获得当前位置,确定展示第几张图片
    int currentNum = scrollView.contentOffset.x / JH_DEVICE_WIDTH;
    // 设置pageControl当前值
    UIPageControl *tempPageControl = (UIPageControl*)[self.view viewWithTag:201];
    tempPageControl.currentPage = currentNum;


6. 实现- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView,这是当滑动将要开始时回调的代理,在开始滑动最后一张图的时候,把UIScrollView和UIPageControl进行消失动画,进行应用的主页面。

    // 获得当前位置,确定展示第几张图片
    int currentNum = scrollView.contentOffset.x / JH_DEVICE_WIDTH;
    // 最后一张开始滑动的时候,进行图片消失动画
    if (currentNum == 4) {
        [self destroyScrollView];
    }

- (void) destroyScrollView {
    // 获得scrollView和pageControl
    UIScrollView *scrollView = (UIScrollView *)[self.view viewWithTag:101];
    UIPageControl *page = (UIPageControl *)[self.view viewWithTag:201];
    
    // 设置滑动图消失的动画效果
    [UIView animateWithDuration:1.5f animations:^{
        scrollView.center = CGPointMake(-JH_DEVICE_WIDTH/2, JH_DEVICE_HEIGHT/2);
    } completion:^(BOOL finished) {
        [scrollView removeFromSuperview];
        [page removeFromSuperview];
    }];
    
    //将滑动图启动过的信息保存到 NSUserDefaults 中,使得第二次不运行滑动图
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setObject:@"YES" forKey:@"isScrollViewAppear"];
}


完成整个过程~~OK~~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值