2016年8月8日 星期一

[Objective-C] 實作頁面切換功能

頁面切換的功能,許多地方都運用到類似的設計,舉例來說像是iPhone的首頁就有用到



























靠手指來Scroll,切換頁面,並在下方加入PageControl來提醒使用者目前位於哪個頁面,

該如何實作呢?

首先開一個專案,在UIViewController之中加入一個UIScrollView,並設定相關的Constraints,假設我希望它靠上,並且與螢幕等寬,高度為200。

你的Constraints會像以下的圖片一樣。






















接著你可能會想要有一個PageControl,也就是點點的部分,此時你要加入一個UIPageControl在你的UIViewController之中。

這裡要注意的是,不是加到UIScrollView,而是在UIViewController之中,因為你要讓這個點點浮在UIScrollView之上。

因此我們只需要設定它與上邊界間距150,以及垂直置中兩條約束即可,此時你的Constraints會像以下的圖片。




















要稍微注意一下View擺放的位置,因為PageControl要浮在UIScrollView之上,因此你的PageControl要擺在UIScrollView之後。






















這邊有一個小技巧給大家參考一下,如果你先加入了UIScrollView,此時要設定PageControl也要跟螢幕上緣作對齊的動作,你可以在尺標那邊將Y軸設定的小一些,他參考的對象就不會是UIScrollView了。











接著,設定你的IBOutlet吧,並且加入UIScrollViewDelegate這個Protocol



然後,你可以參考以下的程式碼



主要你必須先確定你的ContentSize大小,並且做設定,然後加入的頁面依照頁面的不同,在初始化時,設定Frame給予不同的座標。

到這一步你應該就有可以切換頁面的效果了,最後實作UIScrollViewDelegate裡面的
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
來完成PageControl的顯示。



接著,你要在你的PageControl的Value Changed事件加入以下的程式碼,
這樣在PageControl改變時,頁面也會跟著改變。



如此一來就完成了簡單的頁面切換功能。

相關程式碼可以到我的GitHub頁面下載

https://github.com/Aiur3908/ObjectiveC-SampleCode

裡面的InfiniteCarousel就是這篇文章的例子。

參考文章:

使用 UIPageControl 與 UIScrollView 來實作畫面切換的效果