iOS輕量級(jí)下拉刷新,上拉加載

追加:iOS11和iPhoneX已適配,由于iOS11中UITableView默認(rèn)開(kāi)啟高度預(yù)估(行高、區(qū)頭和區(qū)尾),由此引起的頁(yè)面回彈等現(xiàn)象,關(guān)閉高度預(yù)估即可解決,控件內(nèi)部已做調(diào)整,無(wú)需更改代碼,替換新版代碼即可解決。 --2017/10/11

最近項(xiàng)目中需要自定義的刷新動(dòng)畫(huà),所以研究了下MJRefresh的實(shí)現(xiàn)原理,確實(shí)非常巧妙。
下面說(shuō)一下mj的實(shí)現(xiàn)原理:
首先,在UITableView或者UICollectionView的最上方和最下方各放置一個(gè)刷新的控件<mj_header和mj_footer>;
然后,實(shí)現(xiàn)對(duì)UITableView或者UICollectionView的監(jiān)聽(tīng),主要使用KVO,監(jiān)聽(tīng)三個(gè)屬性,contentOffset,contentSize和滑動(dòng)手勢(shì)的狀態(tài)改變;
最后,根據(jù)監(jiān)聽(tīng)到的變化,改變刷新控件的顯示。

剩下的就是一些細(xì)節(jié)的處理,這里有一個(gè)我寫(xiě)好的demo,感興趣的同學(xué)可以下載看一下:https://github.com/wangzhaomeng/LLRefresh

效果圖:

LLRefresh.png

覺(jué)得好,請(qǐng)給個(gè)star,謝謝!

最后編輯于
?著作權(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)容