打開開源中國iOS用戶端應用程式第一步就是加載資料,經常我們在第二次以後打開的時候,我們界面顯示的是上一次更新的資料,此時我們想看最新内容就需要去重新整理資料加載這些内容,加載需要一個等待過程,如何能讓使用者在等待過程中不焦急,能夠等待這個過程完成,這就需要給使用者一個心裡安慰,讓使用者知道該軟體正在很努力很努力的執行自己指令,這就需要我們為自己應用程式添加一些特效;
開源中國iOS用戶端用到了不少特效,這些特效在目前很多應用軟體中都比較流行,基本上這些特效都屬于第三方類庫,本次想說的是下拉重新整理特效,EGOTableViewPullRefresh最開始是在Twitter中使用,最後做了開源,然後很多應用添加這個特效,常作為加載資料時将等待時間作為一個動畫來過渡;
下拉重新整理類庫EGOTableViewPullRefresh資源檔案下載下傳位址:
先這個特效的效果圖
在EGOTableViewPullRefresh資源檔案中有兩個檔案,.m和.h檔案,還有資源圖檔,就是下拉重新整理箭頭
資源圖檔一共4種色,可以根據喜好選用不同色的箭頭,隻需在EGORefreshTableHeaderView.m檔案中修改一下。按照大小尺寸又可分兩種,較大尺寸是用于iPad上使用的。
針對這些第三方類庫,我們沒必要去深入研究它們内部實作機制原理,隻要知道怎麼用就可以。不過,看一看别人實作原理,學學别人的方法還是很不錯的,了解下人家牛人程式是怎麼寫的;
EGORefreshTableHeaderView.h
首先是定義了一個枚舉類型EGOPullRefreshState表示目前我們操作在哪種狀态下,有下拉狀态、正常狀态、資料加載狀态;
@protocol EGORefreshTableHeaderDelegate;表示聲明有這個協定,該協定裡面聲明了一些方法,隻要其他的類遵循了這個協定(也就是遵循了它的規定),就可以去實作協定裡面方法,協定裡的方法是留給遵循這個協定的類去實作的,也是留給外部實作接口;
EGORefreshTableHeaderView成員變量定義兩個label用于提示下拉過程所處狀态,和顯示的重新整理時間。定義的CALayer類對象裝載顯示圖檔。UIActivityIndicatorView類對象顯示一個等待動畫;
@property(nonatomic,assign)id <EGORefreshTableHeaderDelegate> delegate;聲明一個協定對象;
接着下面的是EGORefreshTableHeaderView類成員函數,用于實作類庫中下拉重新整理的效果;
最後定義了4個協定方法,其中最後一個協定方法為可選實作;
下面是EGORefreshTableHeaderView.m檔案,想說的都在注釋裡
當我們想使用這個下拉重新整理類庫的時候,在使用類裡聲明這個協定<EGORefreshTableHeaderDelegate>,把目前類self傳遞給下拉重新整理庫的協定對象,也就是xx.delegate=self;
怎樣讓其他類來使用這裡面效果,這時我們就可以委托另一個類來實作協定的方法。
選中一個協定方法,右鍵選擇Jump to Definition就可以看到哪些類被委托了,怎樣使用了這個類的協定方法:
正在學習過程中,錯誤之處請指正,歡迎交流,共同學習;
本文轉自新風作浪 51CTO部落格,原文連結:http://blog.51cto.com/duxinfeng/1208695,如需轉載請自行聯系原作者