很早就寫了這么一個(gè)框架,但一直沒找到時(shí)間來推廣井厌。
照舊先放上Github的地址:
https://github.com/watermelon520/LPAutoScrollView
特色
- 支持豎直以及水平自動(dòng)輪播
- 沒有侵入性,使用自定義的view
- 自定的view支持純代碼或者xib
- 采用類似UITableView的方式構(gòu)建框架
- view重用機(jī)制的無限輪播毒嫡,性能優(yōu)異
- 針對(duì)常用的image輪播观腊,加入LPImageContentView直接使用
框架主要的核心代碼可以直接下載下來自行研究,網(wǎng)上關(guān)于無限滾動(dòng)的教程也很多浙垫,只是實(shí)現(xiàn)方式有些許不同刨仑,但是大體一樣。所以我在這里就稍微簡(jiǎn)單的說一下實(shí)現(xiàn)方式夹姥。
原理
利用UIScrollView
的滾動(dòng)機(jī)制杉武,讓UIScrollView
的contentSize
和frame
的高一樣,寬度為三倍辙售。
然后往UIScrollView
里加入三個(gè)View
轻抱,依次排開,把UIScrollView
的contentSize
鋪滿旦部。
如圖所示:
上方深色為UIScrollView
祈搜,淺色為contentSize
范圍,
下方1士八、2容燕、3分別是3個(gè)已經(jīng)加入UIScrollView
的view
。
UIScrollView
的默認(rèn)偏移量為一個(gè)寬度
當(dāng)前展示的2號(hào)view
假設(shè)我們需要展示的數(shù)據(jù)數(shù)組為@[a, b, c, d, e, f]
婚度,那么現(xiàn)在2號(hào)view顯示的是b
當(dāng)我們滑動(dòng)UIScrollView
蘸秘,無論左滑還是右滑,即將出現(xiàn)的view要顯示數(shù)據(jù)由2號(hào)view的數(shù)據(jù)決定蝗茁,如果右滑醋虏,那么3號(hào)view顯示c,如果左滑哮翘,1號(hào)view顯示a颈嚼。
現(xiàn)在開始滑動(dòng),如下圖所示:
UIScrollView
的偏移量為2個(gè)寬度
當(dāng)前展示的是3號(hào)view
忍坷,展示的是c
核心思想
這時(shí)候我們需要做幾件事來讓UIScrollView
可以繼續(xù)滾動(dòng)粘舟,這也是無限滾動(dòng)的核心思想所在熔脂。
- 使2號(hào)圖展示3號(hào)圖的數(shù)據(jù)
- 并且改變UIScrollView的偏移為1個(gè)寬度
這樣用戶看起來界面上什么改變也沒有發(fā)生,但是我們把整個(gè)位置都給替換了柑肴。
不要吝嗇你的喜歡霞揉,框架好用請(qǐng)Star。
如果有不懂的或者想要技術(shù)交流都可以私信我晰骑,謝謝大家适秩。