首先說一下:UIActivityIndicator作為刷新控件

成都創(chuàng)新互聯(lián)公司的客戶來自各行各業(yè),為了共同目標(biāo),我們?cè)诠ぷ魃厦芮信浜希瑥膭?chuàng)業(yè)型小企業(yè)到企事業(yè)單位,感謝他們對(duì)我們的要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。專業(yè)領(lǐng)域包括網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、電商網(wǎng)站開發(fā)、微信營(yíng)銷、系統(tǒng)平臺(tái)開發(fā)。
主要實(shí)現(xiàn)方法如下:
下拉刷新01-默認(rèn)
下拉刷新02-動(dòng)畫圖片
下拉刷新03-隱藏時(shí)間
下拉刷新04-隱藏狀態(tài)和時(shí)間
下拉刷新05-自定義文字
下拉刷新06-自定義刷新控件
上拉刷新01-默認(rèn)
上拉刷新02-動(dòng)畫圖片
上拉刷新03-隱藏刷新狀態(tài)的文字
上拉刷新04-全部加載完畢
上拉刷新05-自定義文字
上拉刷新06-加載后隱藏
上拉刷新07-自動(dòng)回彈的上拉01
上拉刷新08-自動(dòng)回彈的上拉02
上拉刷新09-自定義刷新控件(自動(dòng)刷新)
上拉刷新10-自定義刷新控件(自動(dòng)回彈)
uexWindow.setBounce("1");
uexWindow.notifyBounceEvent("1", "1");
uexWindow.notifyBounceEvent("0", "1");
var s =
'{"imagePath":"","textColor":"#aaa","levelText":"","pullToReloadText":"上
拉加載更多內(nèi)容...","releaseToReloadText":"釋放加載更多內(nèi)容...","loadingText":"加載中,請(qǐng)稍
等"}';
uexWindow.setBounceParams("1", s);
uexWindow.showBounceView("1", '#EAEAEA', '1');
var b =
'{"imagePath":"","textColor":"#aaa","levelText":"","pullToReloadText":"下
拉刷新更多內(nèi)容...","releaseToReloadText":"釋放加載更多內(nèi)容...","loadingText":"刷新中,請(qǐng)稍
等"}';
uexWindow.setBounceParams("0", b);
uexWindow.showBounceView("0", '#EAEAEA', '1');
demo鏈接:
喜歡的話請(qǐng)?jiān)趃ithub給顆小星星哦????!
先說一下用法,然后再說實(shí)現(xiàn)
使用方法很簡(jiǎn)單,導(dǎo)入頭文件UIView+XDRefresh.h
用一個(gè)與下拉刷新小圓圈一樣大小的scrollview,把其contentSize也置為同樣大小,然后把下拉刷新的小圓圈放到scrollview上,這樣在下拉刷新過程中只需要根據(jù)被觀察者的下拉狀態(tài)去改變這個(gè)scrollview的contentoffset.y即可實(shí)現(xiàn)小圓圈的上下移動(dòng),而不需要去渲染下拉小圓圈的frame
刷新過程主要分為三種狀態(tài)
主要方法,通過kvo去觀察tableview的下拉過程
實(shí)現(xiàn)觀察者的代理 并在其中實(shí)現(xiàn)三種狀態(tài)(非刷新,刷新,(全非)既不刷新也不非刷新)
全非狀態(tài)時(shí)直接return 以屏蔽掉刷新、非刷新狀態(tài) (刷新小圓圈在下拉懸停狀態(tài)時(shí)進(jìn)入全非狀態(tài),待刷新完成后自動(dòng)收回,這個(gè)過程應(yīng)避免人為干預(yù)造成卡頓,而刷新、和非刷新狀態(tài)人為拉動(dòng)時(shí)都會(huì)干預(yù)到小圓圈的contentoffset所以要屏蔽掉)
非刷新狀態(tài)邏輯
刷新狀態(tài)邏輯
刷新
動(dòng)畫效果
動(dòng)畫結(jié)束后回到最初角度
結(jié)束刷新
到此基本刷新邏輯已經(jīng)完成了 ,還有一些結(jié)束刷新時(shí)的操作就不在這里贅述了,demo里面有詳細(xì)的解析,有什么不合理的地方還望大家指出。
demo鏈接:
使用方法在 該鏈接的ReadMe里
喜歡的話請(qǐng)?jiān)趃ithub給顆小星星哦????!
下拉刷新和上拉加載更多功能是一個(gè)應(yīng)用非常廣泛的一個(gè)效果,而網(wǎng)上也提供了實(shí)現(xiàn)這種效果的第三方庫(kù),比如MJRefresh,用起來非常方便。那么,我們有沒有想過下拉刷新和上拉加載更多的原理是什么,我們自己如何封裝一個(gè)這種上下拉刷新的效果出來!
下拉刷新實(shí)際上是監(jiān)測(cè)UIScrollView的contentOffset的y值,當(dāng)他往下拉動(dòng)時(shí),UIScrollView的contentOffset是一直減小的,然后把通過動(dòng)畫把它的contentInset值控制成一個(gè)定值,然后通過設(shè)置延時(shí)來把UIScrollView的contentInset的值恢復(fù)原點(diǎn)。
上拉加載其實(shí)原理和下拉刷新基本是一樣的,只不過判斷的contentOffset的值不同,如果scrollView.bounds.size.height +? scrollView.contentOffset.y scrollView.contentSize.height,說明你執(zhí)行了上拉操作,然后實(shí)現(xiàn)起來基本就和下拉刷新是一樣的。
上圖所示,給tableView增加一個(gè)頂部的子視圖和一個(gè)底部的子視圖,只是初始的時(shí)候這些視圖在手機(jī)屏幕的外面,我們看不到而已。
1、首先,我們?cè)诳刂破髦刑砑右粋€(gè)tableView,并在tableView的頂部和底部各添加一個(gè)子視圖,作為下拉刷新view和上拉加載更多view,如上圖所示。
添加tableView和子視圖的步驟大家應(yīng)該很熟悉,所以,略!
2、設(shè)置scrollView的代理。實(shí)現(xiàn)- (void)scrollViewWillBeginDecelerating:(UIScrollView*)scrollView方法。
- (void)scrollViewWillBeginDecelerating:(UIScrollView*)scrollView方法,在用戶停止拖動(dòng),手指將要離開屏幕的時(shí)候調(diào)用。在該方法中判斷scrollVoew的contentOffset.y值的大小,來確定用戶拖動(dòng)的幅度大小。
3、正在下拉刷新或者加載更多的時(shí)候,通過改變tableView的contentInset來改變內(nèi)邊距。(自動(dòng)開始下拉刷新或自動(dòng)上拉刷新,也可以調(diào)用下面這兩個(gè)方法)
4、結(jié)束下拉刷新或上拉加載更多
5、效果圖如下:
最近利用 MJRefresh 做了一個(gè)下拉刷新和上拉加載的動(dòng)畫,先上效果圖:
如果該類繼承自 MJRefreshAutoGifFooter 類,則父類方法 - (void)placeSubviews NS_REQUIRES_SUPER; 實(shí)現(xiàn)如下:
如果創(chuàng)建的上拉加載gif類繼承自 MJRefreshAutoGifFooter ,則加載效果如下,其中的文字提示可以通過重寫父類方法 - (void)placeSubviews NS_REQUIRES_SUPER; 設(shè)置 self.stateLabel.hidden = YES; 隱藏掉。
網(wǎng)站題目:ios開發(fā)下拉刷新,ios 刷新
文章起源:http://chinadenli.net/article11/dsgpcgd.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、企業(yè)網(wǎng)站制作、網(wǎng)站收錄、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)