每次第一次打開app的時候都會出現(xiàn)那種滑動式的歡迎界面粟耻,這次我就簡單的寫一個小demo來實現(xiàn)以下歡迎頁面的樣子行拢。
頁面效果簡單的如下圖
下面有四個小圓點捣郊,是隨著畫面的切換而變換。
下面就是實現(xiàn)代碼部分
首先就是在AppDelegate.m中導入#import "ViewController.h"
接下來就是寫常用的代碼
_window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
_window.backgroundColor = [UIColor whiteColor];
[_window makeKeyAndVisible];
ViewController *vc = [[ViewController alloc]init];
// UINavigationController *na = [[UINavigationController alloc]initWithRootViewController:vc];
_window.rootViewController = vc;
歡迎頁面主要思想是scrollview置逻,一個長度為屏寬四倍的scrollview,然后每次只展示出一個屏寬的內(nèi)容备绽,隨著手勢的滑動券坞,下一個屏寬的內(nèi)容才會出現(xiàn)出來,所以首先要添加scrollview肺素。
在ViewController.m的viewDidLoad方法中恨锚,先添加一個scrollview
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
[self.view addSubview:scrollView];
這個時候設置一下scrollview的一些基本屬性,并且要遵守響應的協(xié)議倍靡。
<UIScrollViewDelegate>
//設置內(nèi)容的大小
//因為不需要豎向滾動猴伶,所以高度只要小于scrollview的高度就可以
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * imageNames.count, 0);
//以翻頁形式進行滾動
scrollView.pagingEnabled = YES;
//為了檢測滾動視圖的偏移量,引入代理
scrollView.delegate = self;
這樣子頁面上就是有一個屏寬四倍的scrollview塌西,但是現(xiàn)在并未進行一些別的設置蜗顽,所以現(xiàn)在界面上顯示不出來什么東西。
接下來呢雨让,是吧你要展示的四張圖片丟進一個數(shù)組里面雇盖,并且把四張圖片放進UIImageView里面,將這四張圖平整的鋪開在scrollview上面栖忠,擺成一排
NSArray *imageNames = @[@"welcome1", @"welcome2",@"welcome3",@"welcome4",];
for (int i = 0; i < imageNames.count; i ++) {
UIImageView *iv = [[UIImageView alloc] initWithImage:[UIImage imageNamed:imageNames[i]]];
iv.frame = CGRectMake(i * scrollView.frame.size.width, 0, scrollView.frame.size.width, scrollView.frame.size.height);
[scrollView addSubview:iv];
}
這些做完呢崔挖,大致可以看到圖片了。但是圖片的橫向滾動實現(xiàn)了庵寞,不過下面得加上四個小圓點狸相,才可以相得益彰,所以這個時候需要一個UIPageControl來實現(xiàn)捐川。
// 添加頁數(shù)控制視圖 new = alloc + init
UIPageControl *pageControl = [UIPageControl new
];
[self.view addSubview:pageControl];
此時脓鹃,界面上已經(jīng)添加了pageController了,注意古沥,這個pageController不可以加到scrollview上瘸右,那樣會隨著滾動消失掉娇跟。而且一般情況下,這些點都偏于下方太颤,所以暫且設置為屏幕下方60像素苞俘,并且要設置個數(shù)以及相應切換時選中的顏色等等屬性。
// 設置常用屬性,距離屏幕下方60像素龄章。
pageControl.frame = CGRectMake(0, self.view.frame.size.height - 60, self.view.frame.size.width, 30);
// 設置圓點的個數(shù)
pageControl.numberOfPages = imageNames.count;
// 設置沒有被選中時圓點的顏色
pageControl.pageIndicatorTintColor = [UIColor blackColor];
// 設置選中時圓點的顏色
pageControl.currentPageIndicatorTintColor = [UIColor redColor];
// 關閉分頁控件的用戶交互功能
pageControl.userInteractionEnabled = NO;
// 設置分頁控件的tag值吃谣,以便于之后的方法調(diào)用
pageControl.tag = 1000;
到此為止,界面的基本設置是已經(jīng)完成了做裙,接下來需要是進行在頁面滾動的時候?qū)崿F(xiàn)一些時間的方法岗憋。
而且大部分的app,在歡迎界面的第四頁都會有進入app的按鈕锚贱,或者是在右上角有叉叉按鈕仔戈,這個跟我下面做的添加按鈕的意思是一樣的,所以簡要的直接添加一個按鈕惋鸥。
//為最后一頁添加按鈕
UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];
[btn setTitle:@"點擊進入" forState:UIControlStateNormal];
//因為是滾動視圖最后一頁杂穷,所以要添加到滾動視圖中
[scrollView addSubview:btn];
btn.frame = CGRectMake(0, 0, 100, 40);
//把按鈕添加到第四頁的中心
btn.center = CGPointMake((imageNames.count - 0.5) * scrollView.frame.size.width, scrollView.frame.size.height - 100);
[btn addTarget:self action:@selector(click) forControlEvents:UIControlEventTouchUpInside];
這里需要注意的是按鈕的位置,因為scrollview像是一張平鋪下來的紙卦绣,而我們所看到的屏幕就像是一個小視角框耐量,我們得移動這個小框,才可以看到其他內(nèi)容滤港,所以按鈕只能添加在第四個屏寬的地方廊蜒。那樣才是正確的。
同時添加的點擊方法溅漾。click方法山叮,并且實現(xiàn)
- (void)click{
NSLog(@"這個地方是填寫點擊事件實現(xiàn)的方法");
}
最后的最后,差不多是個重要的店添履,就是在滾動試圖發(fā)生位移的時候屁倔,進入UIScrollViewDelegate代理方法。
需要取得scrollview的偏移量暮胧,根據(jù)滾動的位置決定當前的是第幾頁锐借,并且設置分頁控制器的當前頁面.
//當滾動視圖發(fā)生位移,就會進入下方代理方法
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
UIPageControl *pageControl = (UIPageControl *)[self.view viewWithTag:1000];
//取得偏移量
CGPoint point = scrollView.contentOffset;
//根據(jù)滾動的位置來決定當前是第幾頁
//可以用 round() C語言方法進行 四舍五入操作
NSInteger index = round(point.x/scrollView.frame.size.width);
//設置分頁控制器的當前頁面
pageControl.currentPage = index;
}
這個是地址往衷,大家可以進去下載了看一下
welcome歡迎頁面demo
現(xiàn)在還有個問題就是現(xiàn)在的demo每次都會出現(xiàn)钞翔,讓它只有第一次出現(xiàn)我還沒有研究,后續(xù)應該會補齊席舍。
此外布轿,這個demo也是我做的比較粗糙的,針對的也是像我一樣的新手,有啥問題希望大家可以指正汰扭,共同學習稠肘。