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

来源:互联网 发布:好看的网络剧穿越剧 编辑:程序博客网 时间:2024/06/06 02:27

昨天,弄了一早上和半个下午的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
原创粉丝点击