NSUserDefaults 簡介:app
NSUserDefaults能夠將數據永久的保存在手機中,他是一個單例,用起來很方便,因此很適合用於保存簡單的數據和爲數據作標記。動畫
更多的關於NSUserDefaults的介紹請看:NSUserDefaults 簡介spa
你能夠選擇在AppDelegate.m中的didFinishLaunchingWithOptions 方法或者「初始界面」(加載的第一個viewController)的 viewDidLoad 方法中進行判斷滑動圖是否出現過,寫上代碼:.net
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; //判斷滑動圖是否出現過,第一次調用時「isScrollViewAppear」 這個key 對應的值是nil,會進入if中 if (![@"YES" isEqualToString:[userDefaults objectForKey:@"isScrollViewAppear"]]) { [self showScrollView];//顯示滑動圖 }
UIScrollView : 帶有滑動效果,在上面加入UIImageView再設置代理後,能夠實現翻頁顯示圖片的效果代理
涉及的相關屬性:code
contentSize : UIScrollView 顯示的尺寸,這個按需求而設orm
pagingEnabled : 是否支持一頁一頁的翻,設置成YES後,每一次滑動,翻動一頁;blog
bounces:是否支持反彈,這是一個動畫效果,你們能夠設置來看看,通常滑動圖設置爲NO;事件
showsHorizontalScrollIndicator : 是否顯示水平的滑動條圖片
UIPageControl:通常配合UIScrollView使用,指向UIScrollView當前所指的頁數
涉及的相關屬性:
numberOfPages:一共有幾個點(幾頁),這個要設置得和滑動圖的頁數同樣
相關代碼:
#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]; }
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 介紹:
顧名思義,這是一個滑動後減速結束的方法,這裏進行的是 UIPageControl 和 UIScrollView 的配
套使用、滑動圖消失信息等:
涉及到的相關屬性:
UIScrollView:
contentOffset : UIScrollView 的偏移量(滑動的位置)
UIPageControl:
currentPage : UIPageControl 的當前頁
相關代碼:
#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]; } }
這裏只須要將UIScrollView和UIPageControl 從主屏幕上移除就能夠了,別忘了將啓動信息保存到 NSUserDefaults 中,固然你能夠設置一些動畫效果,或者須要點擊才能移除均可以,下面給出的代碼是一個簡單的動畫效果:
代碼以下:
-(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"]; }
這個滑動圖代碼稍做修改,能夠添加定時翻頁,相冊瀏覽,點擊鏈接到相應的事件等,原理都是同樣的。