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];//顯示滑動圖
}
|
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];
}
|
- (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];
}
}
|
這裏只須要將UIScrollView和UIPageControl 從主屏幕上移除就能夠了,別忘了將啓動信息保存到 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"];
}
|
這個滑動圖代碼稍做修改,能夠添加定時翻頁,相冊瀏覽,點擊鏈接到相應的事件等,原理都是同樣的。