天天看點

[iOS]UIScrollView 與 UIPageControl實作簡單相冊功能

通過學習UIScrollView,對其有所了解,今天簡單介紹一下UIScrollView的簡單用法以及需要注意的事項。

原理:

用UIScrollView來實作圖檔的的浏覽、圖檔的縮放功能相對簡單一點,因為UIScrollView是滾動視圖,也就意味着,我可以将很多圖檔放在UIScrollView視圖内,來實作圖檔的浏覽功能。UIPageControl可以顯示目前為第幾張圖檔,UIScrollView 還可以對其顯示的内容進行縮放,進而可以實作圖檔的縮放功能。

UIScrollView 建立的過程非常簡單。

注意點:1

       // 整屏翻動

_scroll.pagingEnabled = YES;

_scroll.tag = 10;  //要設定一個tag值,後邊要用到

要注意pagingEnabled 這個屬性,預設為NO,如果不開啟的畫,圖檔之間切換不是整屏翻動的,而是你滑動多少,圖檔就移動多少。

注意點:2

UIScrollView 内的子視圖要為UIScrollView類型,不要直接将UIImageView放在UIScrollView上,這樣會造成的後果是,對一張圖檔進行縮放時,所有的圖檔都會跟着一起縮放。我之前提到過,UIScrollView是對它的顯示内容進行縮放,而不是目前螢幕顯示的内容進行縮放。圖檔都在UIScrollView上, 都是它的内容,所有都跟着一起縮放。

那麼如何來解決這個問題呢?我們還是需要對UIScrollView的縮放原理仔細的想一想, 我們可以把UIImageView放在UIScrollView上,在将這個UIScrollView作為一個子視圖,放入一個大的UIScrollView上,這樣,每張圖檔就獨立了,操作子UIScrollView時不會影響到其他的視圖。

注意點:3

建立子UIScrollView視圖 要設定 minimumZoomScale  maximumZoomScale 的值。

每個子視圖都要設定一個tag值。

注意點:4

要對子視圖進行縮放,必須要遵循UIScrollViewDelegate協定,并且設定代理人,否則不會自動調用- (void)scrollViewDidScroll:(UIScrollView *)scrollView 方法,這個方法裡要對UIPageControl 的目前頁面setCurrentPage:進行設定。與圖檔同步滑動。 

注意點:5

- (void)scrollViewDidScroll:(UIScrollView *)scrollView裡,通過tag來判斷目前顯示的是哪一個子視圖,如果tag == 10,就根據目前頁面偏移量,設定UIPageControl 的目前頁面。

注意點:6

- (void)pageControlAction 方法裡,根據currentPage 改變UIScrollView 的偏移量,實作UIPageControl 的頁面改變,圖檔也跟着變。