頁面切換的功能,許多地方都運用到類似的設計,舉例來說像是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 來實作畫面切換的效果
沒有留言:
張貼留言