iOS 輪播圖的實(shí)現(xiàn)邏輯(四種方法)

現(xiàn)在的App開(kāi)發(fā)中,輪播圖幾乎是一個(gè)不可避免的都會(huì)用到的。個(gè)人封裝過(guò)輪播圖,也看過(guò)很多種不同的輪播圖,目前掌握的輪播圖無(wú)限輪播有四種不同的實(shí)現(xiàn)方式:

第一種:基于collectionView進(jìn)行的封裝(推薦)

這種方式應(yīng)該是實(shí)現(xiàn)起來(lái)最簡(jiǎn)單的一種方式了,也是個(gè)人最喜歡的一種封裝方式。它的原理就是幾個(gè)collectionView,至于無(wú)限輪播,很簡(jiǎn)單,只需要你的輪播數(shù)組給collectionView賦值的時(shí)候乘以一個(gè)較大的數(shù)字即可(例如100),collectionView本身處理了重用等一系列問(wèn)題。

第二種:基于scrollView的無(wú)限輪播(首尾各多創(chuàng)建一個(gè)展示圖片的ImageView)

這種實(shí)現(xiàn)方式個(gè)人感覺(jué)是最麻煩,而且還需要考慮重用等性能問(wèn)題的一種?;镜脑砭褪窃诟鶕?jù)你輪播數(shù)組的個(gè)數(shù)在首尾各多創(chuàng)建一個(gè)ImageView,當(dāng)然首位之前多創(chuàng)建一個(gè)展示輪播數(shù)組最后一個(gè)的ImageView,而尾部多創(chuàng)建一個(gè)展示輪播數(shù)組第一個(gè)的ImageView。

例如輪播數(shù)組有4張圖。

3 0 1 2 3 0

當(dāng)用戶在滑到最左或者最右的瞬間將scrollView的偏移量進(jìn)行改變,因?yàn)槠涫孜哺饔幸粡?,用戶在視覺(jué)上幾乎感覺(jué)不出來(lái)。

這種的缺點(diǎn)就是如果輪播數(shù)組中圖片太多,要考慮重用的問(wèn)題。

第三種:同樣是基于scrollView的無(wú)限輪播(總共就創(chuàng)建三個(gè)ImageView)

這種實(shí)現(xiàn)方式比第二種的好處就是不需要考慮重用問(wèn)題,不論數(shù)組是多少個(gè)輪播圖,我只創(chuàng)建三個(gè)ImageView。它與第二種的不同之處是其實(shí)用戶每次看到的一直都是中間那張的ImageView,只是上邊的內(nèi)容改變了。其內(nèi)部實(shí)現(xiàn)其實(shí)是在不斷的改變那個(gè)輪播數(shù)組。

第四種:只有一個(gè)ImageView

這種實(shí)現(xiàn)方式不再基于ScrollView,同樣不存在重用等的問(wèn)題。這種實(shí)現(xiàn)方式跟第三種有相似之處,但是它跟第三種的區(qū)別是不再使用scrollView的圖片切換方式。還是不停地去改變這個(gè)數(shù)組的內(nèi)容。這種實(shí)現(xiàn)方式的核心在于切換的時(shí)候使用自定義的layer層的轉(zhuǎn)場(chǎng)動(dòng)畫(huà)。模擬scrollView的滑動(dòng)效果。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容