最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS編寫(xiě)下拉刷新控件

 更新時(shí)間:2016年04月13日 17:17:20   作者:車寶大人  
這篇文章主要介紹了iOS編寫(xiě)下拉刷新控件的相關(guān)資料,iOS如何寫(xiě)個(gè)普通的下拉刷新的控件,需要了解的朋友可以參考下文

現(xiàn)在iOS里有很多成熟的下拉刷新控件,比如MJRefresh,SVPullToRefresh

我這里參考了SV的寫(xiě)法,但是回調(diào)用的是代理,沒(méi)有用block,個(gè)人感覺(jué)用代理更簡(jiǎn)潔一點(diǎn)

下拉刷新的基本原理

在scrollview的上面和下面分別添加一個(gè)view,上面的是下拉的時(shí)候展示下拉動(dòng)畫(huà)的headerView,下面的是上拉加載更多的時(shí)候展示動(dòng)畫(huà)的footerView

這里的headerView和footerView都是自己添加的,和tableView自己的header,footer不一樣

headerView是添加在scrollView的最上面的,設(shè)置frame的時(shí)候是origin.y是負(fù)數(shù)

當(dāng)下拉達(dá)到條件就觸發(fā)刷新,同時(shí)更改scrollview的contentInsert.top值,以使手指松開(kāi)之后headerView仍然可以露出來(lái)

刷新結(jié)束之后,停止headerView上面的動(dòng)畫(huà),然后把contentInsert的值改回去

footerView是添加在最下方的,frame.origin.y是scrollview的contentSize.height

在上拉到一定程度之后就更改scrollview的contentInsert,使footerView可以露出來(lái),加載結(jié)束之后就改回去

如何寫(xiě)下拉刷新

寫(xiě)下拉刷新一般都是給scrollview寫(xiě)一個(gè)類別,添加一個(gè)新的方法,來(lái)把headerView和footerView添加到scrollview上面

給scrollview聲明一個(gè)headerView類型的屬性(如何給類別添加屬性)

然后給scrollview的contentoffset屬性添加監(jiān)聽(tīng)者,這個(gè)監(jiān)聽(tīng)者就是headerView

這樣,在scrollview滑動(dòng)的時(shí)候,就可以監(jiān)聽(tīng)到滑動(dòng)的情況,并根據(jù)數(shù)據(jù)來(lái)決定是否刷新和時(shí)候改變scrollview.contentInsert.y

然后再寫(xiě)一個(gè)停止刷新的方法,用來(lái)停止刷新動(dòng)畫(huà)和更改scrollview.contentInsert.y

這樣scrollview的擴(kuò)展就寫(xiě)完了,然后就要寫(xiě)自定義的headerView

headerView的動(dòng)畫(huà)是根據(jù)需要些的,數(shù)據(jù)來(lái)源就是監(jiān)聽(tīng)到的contentoffset

在scrollViewDidScroll方法里來(lái)處理監(jiān)聽(tīng)到的值

這里使用了一個(gè)枚舉類型來(lái)記錄刷新?tīng)顟B(tài),從而控制動(dòng)畫(huà)

雖然原理簡(jiǎn)單,但是實(shí)踐起來(lái)遇到了很多困難,有技術(shù)上的,也有邏輯上的,心力交瘁,才搞出來(lái)一個(gè)小

Demo:https://github.com/chebaoGitHub/CBGeneralRefreshView

footerView同理

結(jié)語(yǔ):

寫(xiě)這個(gè)控件最大的收獲就是加深了對(duì)set get方法的理解,對(duì)scrollview的理解,對(duì)category的理解

但是這里仍然有一個(gè)bug

在下拉達(dá)到條件,headerView開(kāi)始動(dòng)畫(huà),設(shè)置contentInsert之后,正在回彈的scrollview會(huì)出現(xiàn)抖動(dòng),手指滑的越快抖動(dòng)越厲害,不知道為什么,現(xiàn)在還沒(méi)有解決,希望大家可以有好的解決方法,大家共同學(xué)習(xí)。

相關(guān)文章

最新評(píng)論

宁国市| 庐江县| 河北省| 西乌珠穆沁旗| 平乐县| 衡阳市| 南安市| 连平县| 兴宁市| 延吉市| 吐鲁番市| 兴义市| 台中县| 福清市| 封丘县| 定襄县| 通许县| 丹寨县| 邯郸市| 高邮市| 海原县| 望都县| 察哈| 襄樊市| 哈巴河县| 克东县| 平阴县| 滨海县| 榆社县| 明光市| 如东县| 青田县| 栖霞市| 嘉荫县| 武定县| 子长县| 苍山县| 灵川县| 新巴尔虎左旗| 珲春市| 佛坪县|