先來看一張效果圖(licecap錄制的有點(diǎn)卡, 湊合看)
理一下大概流程:
接下來實(shí)現(xiàn): 彈幕視圖從底部彈上來, 依次動(dòng)畫向上滾動(dòng), 出屏幕就移除加入重用隊(duì)列, 下次使用.
定義相關(guān)屬性:
1. 根據(jù)彈幕區(qū)域, 確定總共需要的彈幕itemview個(gè)數(shù)(總區(qū)域高度/最小高度),并添加到彈幕控件底部
追加一條新數(shù)據(jù)(由于需要?jiǎng)赢嬏幚? 當(dāng)前數(shù)據(jù)動(dòng)畫完成后才能處理下一條數(shù)據(jù),這里需要定義兩個(gè)區(qū):正在處理區(qū)和等待處理區(qū))
追加數(shù)據(jù)并彈出
從處理區(qū)取出itemview并初始化其將要展示的位置,計(jì)算寬高, 然后遍歷展示區(qū)item做動(dòng)畫, 接下來對(duì)將要展示的item做動(dòng)畫
執(zhí)行動(dòng)畫(upoffsetheight為要展示的彈幕高度)
.動(dòng)畫完成后,接著處理:
將展示區(qū)的item遍歷, 如果已經(jīng)徹底移除屏幕了, 就回收到未展示區(qū)復(fù)用;
將當(dāng)前繪制好的彈幕更新分區(qū): 未展示區(qū)—>展示區(qū)
繼續(xù)處理等待區(qū)數(shù)據(jù)
大概思路就是這樣.
昨天花了個(gè)把小時(shí)完成了這個(gè)功能,并沒有優(yōu)化, 僅供參考學(xué)習(xí).
demo地址: https://github.com/winerywine/barrageview .git
總結(jié)
以上所述是小編給大家介紹的ios 圖解彈幕功能的實(shí)現(xiàn)思路詳解,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)服務(wù)器之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!原文鏈接:https://www.cnblogs.com/jgCho/archive/2019/07/25/11242842.html