UIScrollView 和UIPageControl 實現app啓動滑動圖

1、使用NSUserDefaults 判斷滑動圖有沒有出現過,加載滑動圖

NSUserDefaults 簡介: app

       NSUserDefaults能夠將數據永久的保存在手機中,他是一個單例,用起來很方便,因此很適合用於保存簡單的數據和爲數據作標記。 動畫

更多的關於NSUserDefaults的介紹請看:NSUserDefaults 簡介 spa

     你能夠選擇在AppDelegate.m中的didFinishLaunchingWithOptions 方法或者「初始界面」(加載的第一個viewController)的 viewDidLoad 方法中進行判斷滑動圖是否出現過,寫上代碼: .net


?
1
2
3
4
5
6
7
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
 
//判斷滑動圖是否出現過,第一次調用時「isScrollViewAppear」 這個key 對應的值是nil,會進入if中
    if (![@"YES" isEqualToString:[userDefaults objectForKey:@"isScrollViewAppear"]]) {
         
        [self showScrollView];//顯示滑動圖
    }


2、初始化 UIScrollView 和  UIPageControl 爲啓動滑動圖作準備

UIScrollView : 帶有滑動效果,在上面加入UIImageView設置代理後,能夠實現翻頁顯示圖片的效果 代理

涉及的相關屬性: orm

contentSize : UIScrollView 顯示的尺寸,這個按需求而設 blog

pagingEnabled : 是否支持一頁一頁的翻,設置成YES後,每一次滑動,翻動一頁; 事件

bounces:是否支持反彈,這是一個動畫效果,你們能夠設置來看看,通常滑動圖設置爲NO; 圖片


showsHorizontalScrollIndicator : 是否顯示水平的滑動條 ci


UIPageControl:通常配合UIScrollView使用,指向UIScrollView當前所指的頁數

涉及的相關屬性:

numberOfPages:一共有幾個點(幾頁),這個要設置得和滑動圖的頁數同樣



相關代碼:


?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#pragma mark - 滑動圖
 
-(void) showScrollView{
 
    UIScrollView *_scrollView = [[UIScrollView alloc] initWithFrame:[UIScreen mainScreen].bounds];
     
      //設置UIScrollView 的顯示內容的尺寸,有n張圖要顯示,就設置 屏幕寬度*n ,這裏假設要顯示4張圖
    _scrollView.contentSize = CGSizeMake([UIScreen mainScreen].bounds.size.width * 4, [UIScreen mainScreen].bounds.size.height);
     
    _scrollView.tag = 101;
     
    //設置翻頁效果,不容許反彈,不顯示水平滑動條,設置代理爲本身
    _scrollView.pagingEnabled = YES;
    _scrollView.bounces = NO;
    _scrollView.showsHorizontalScrollIndicator = NO;
    _scrollView.delegate = self;
     
    //在UIScrollView 上加入 UIImageView
    for (int i = 0 ; i < 4; i ++) {
         
        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake([UIScreen mainScreen].bounds.size.width * i , 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
         
        //將要加載的圖片放入imageView 中
        UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"%d",i+1]];
        imageView.image = image;
         
        [_scrollView addSubview:imageView];
    }
     
    //初始化 UIPageControl 和 _scrollView 顯示在 同一個頁面中
    UIPageControl *pageConteol = [[UIPageControl alloc] initWithFrame:CGRectMake(140, self.view.frame.size.height - 60, 50, 40)];
    pageConteol.numberOfPages = 4;//設置pageConteol 的page 和 _scrollView 上的圖片同樣多
    pageConteol.tag = 201;
     
    [self.view addSubview:_scrollView];
    [self.view addSubview: pageConteol];
}

3、實現UIScrollView的代理方法

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 介紹:


       顧名思義,這是一個滑動後減速結束的方法,這裏進行的是 UIPageControl 和 UIScrollView 的配


套使用、滑動圖消失信息等:


涉及到的相關屬性:


UIScrollView:


contentOffset : UIScrollView 的偏移量(滑動的位置)


UIPageControl:

currentPage : UIPageControl 的當前頁 



相關代碼:



?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#pragma mark - UIScrollViewDelegate
 
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
     
    // 記錄scrollView 的當前位置,由於已經設置了分頁效果,因此:位置/屏幕大小 = 第幾頁
    int current = scrollView.contentOffset.x/[UIScreen mainScreen].bounds.size.width;
     
    //根據scrollView 的位置對page 的當前頁賦值
    UIPageControl *page = (UIPageControl *)[self.view viewWithTag:201];
    page.currentPage = current;
     
    //當顯示到最後一頁時,讓滑動圖消失
    if (page.currentPage == 3) {
         
        //調用方法,使滑動圖消失
        [self scrollViewDisappear];
    }
}

4、從屏幕上移除UIScrollView,並保存信息

     這裏只須要將UIScrollViewUIPageControl 從主屏幕上移除就能夠了,別忘了將啓動信息保存到 NSUserDefaults 中,固然你能夠設置一些動畫效果,或者須要點擊才能移除均可以,下面給出的代碼是一個簡單的動畫效果:

代碼以下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
-(void)scrollViewDisappear{
 
    //拿到 view 中的 UIScrollView 和 UIPageControl
    UIScrollView *scrollView = (UIScrollView *)[self.view viewWithTag:101];
    UIPageControl *page = (UIPageControl *)[self.view viewWithTag:201];
 
    //設置滑動圖消失的動畫效果圖
    [UIView animateWithDuration:3.0f animations:^{
         
        scrollView.center = CGPointMake(self.view.frame.size.width/2, 1.5 * self.view.frame.size.height);
         
    } completion:^(BOOL finished) {
         
        [scrollView removeFromSuperview];
        [page removeFromSuperview];
    }];
     
    //將滑動圖啓動過的信息保存到 NSUserDefaults 中,使得第二次不運行滑動圖
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setObject:@"YES" forKey:@"isScrollViewAppear"];
}

這個滑動圖代碼稍做修改,能夠添加定時翻頁,相冊瀏覽,點擊鏈接到相應的事件等,原理都是同樣的。

相關文章
相關標籤/搜索