如今的App開發中,輪播圖幾乎是一個不可避免的都會用到的。我的封裝過輪播圖,也看過不少種不一樣的輪播圖,目前掌握的輪播圖無限輪播有四種不一樣的實現方式:
數組
第一種:基於collectionView進行的封裝(推薦)
這種方式應該是實現起來最簡單的一種方式了,也是我的最喜歡的一種封裝方式。它的原理就是幾個collectionView,至於無限輪播,很簡單,只須要你的輪播數組給collectionView賦值的時候乘以一個較大的數字便可(例如100),collectionView自己處理了重用等一系列問題。
第二種:基於scrollView的無限輪播(首尾各多建立一個展現圖片的ImageView)
這種實現方式我的感受是最麻煩,並且還須要考慮重用等性能問題的一種。基本的原理就是在根據你輪播數組的個數在首尾各多建立一個ImageView,固然首位以前多建立一個展現輪播數組最後一個的ImageView,而尾部多建立一個展現輪播數組第一個的ImageView。
例如輪播數組有4張圖。
當用戶在滑到最左或者最右的瞬間將scrollView的偏移量進行改變,由於其首尾各有一張,用戶在視覺上幾乎感受不出來。性能
這種的缺點就是若是輪播數組中圖片太多,要考慮重用的問題。
第三種:一樣是基於scrollView的無限輪播(總共就建立三個ImageView)
這種實現方式比第二種的好處就是不須要考慮重用問題,不論數組是多少個輪播圖,我只建立三個ImageView。它與第二種的不一樣之處是其實用戶每次看到的一直都是中間那張的ImageView,只是上邊的內容改變了。其內部實現實際上是在不斷的改變那個輪播數組。
第四種:只有一個ImageView
這種實現方式再也不基於ScrollView,一樣不存在重用等的問題。這種實現方式跟第三種有類似之處,可是它跟第三種的區別是再也不使用scrollView的圖片切換方式。仍是不停地去改變這個數組的內容。這種實現方式的核心在於切換的時候使用自定義的layer層的轉場動畫。模擬scrollView的滑動效果。