Swift 4 無限滾動輪播圖(UICollectionView實現(xiàn))

作為一個資深(自認為)iOS程序猿,會經常用到輪播圖,但是總是感覺自己實現(xiàn)要比直接用別人的要方便一點,并且有一些需求需要深度定制,于是想著自己封裝一個可以定制化的輪播圖庫JCyclePictureView。

GitHub地址

1、核心代碼

數(shù)據(jù)處理

通過更改數(shù)據(jù)源來給用戶一個假象,圖片在無限滾動(其實一共只有3個 cell),默認顯示第二個,右滑 index + 1, 左滑 index - 1,然后修改數(shù)據(jù)源,異步回到第一個cell(注意不能有動畫)

?滑動事件

2、可定制 cell

深度定制 cell
自定義 cell 的回調

本質為UICollectionView 的cellForItemAt 代理,需自己實現(xiàn)賦值邏輯

cellForItemAt

3、滾動方向

輪播圖滾動方向

支持 上下左右 四種滾動方式

定時器事件

實際為 UICollectionView 用動畫滾動到 第0個 cell 還是第2個 cell

UICollectionView動畫

4、PageControl

為實現(xiàn)可支持圖片的PageControl,寫了一個繼承UIPageControl 的 JPageControl

JPageControl

紅框內為核心代碼,原理其實很簡單,在每一個 顯示的點上面添加一張圖片,然后根據(jù) currentPage 屬性修改圖片

JPageControl對齊方式

目前對齊方式支持 left、center、right,通過修改 frame 確定位置

5、其它需求

init方法

pictures 可以之后設置 ?pictures支持本地、網(wǎng)絡圖片同時加載

輪播圖標題

設置標題時?PageControl 自動右對齊

點擊圖片回調

index 從0 開始

自動播放時間

小于0.5秒不自動播放(如果不想自動播放可以 設為 0)

圖片的ContentMode

設置圖片的ContentMode

6、用法

用法
自定義 cell

如果使用過程中出現(xiàn)問題,可隨時 mr_banma@126.com 郵件聯(lián)系。

ps:如果喜歡,記得 Star 一下,謝謝支持?

源碼?

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

友情鏈接更多精彩內容