在ios7之前,一直在使用開源的EGO庫。但是,在使用過程中發現,普遍封裝得過於復雜、耦合性強,不利於集成到自己的項目中。
另外,在ios7之後,一些原有的下拉刷新,上提加載控件表現的就不是那麼出色瞭。除瞭可能出錯外,也不符合扁平化的風格。
後來,在code4App上發現瞭一個大牛上傳瞭一個開源代碼, 僅需幾行代碼就可以為UITableView或者CollectionView加上下拉刷新或者上拉刷新功能。可以自定義上下拉刷新的文字說明。
下載下來自己試瞭下,發現不錯。 mark下。
下面紀錄下自己的集成過程,當然,作者所給的demo裡面已經很詳細的給出瞭。 這裡隻不過是紀錄下自己的實現過程而已。
1.將MJRefresh文件夾整個導入所需的工程中。
2.文件夾中的MJRefresh.bundle—>arrow@2x.png 圖片可自行替換,這個會在刷新過程中顯示。
3.可以在MJRefreshConst.h和MJRefreshConst.m文件中自定義顯示的文字內容和文字顏色。
4.隻要你的view能夠滾動,就能集成這個控件,比如UIScrollView、UITableView、UICollectionView
5.在需要使用的地方,加入如下代碼即可。
5.1 導入頭文件
#import MJRefresh.h
5.2 遵從協議
@interface ViewController ()
5.3 為你的view添加控件
MJRefreshFooterView *footer = [MJRefreshFooterView footer]; footer.scrollView = myTableView; footer.delegate = self; MJRefreshHeaderView *header = [MJRefreshHeaderView header]; header.scrollView = myTableView; header.delegate = self;
5.4實現代理方法
#pragma mark - 刷新控件的代理方法 #pragma mark 開始進入刷新狀態 - (void)refreshViewBeginRefreshing:(MJRefreshBaseView *)refreshView { NSLog(@%@----開始進入刷新狀態, refreshView.class); // 2.2秒後刷新表格UI [self performSelector:@selector(doneWithView:) withObject:refreshView afterDelay:2.0]; } #pragma mark 刷新完畢 - (void)refreshViewEndRefreshing:(MJRefreshBaseView *)refreshView { NSLog(@%@----刷新完畢, refreshView.class); } #pragma mark 監聽刷新狀態的改變 - (void)refreshView:(MJRefreshBaseView *)refreshView stateChange:(MJRefreshState)state { switch (state) { case MJRefreshStateNormal: NSLog(@%@----切換到:普通狀態, refreshView.class); break; case MJRefreshStatePulling: NSLog(@%@----切換到:松開即可刷新的狀態, refreshView.class); break; case MJRefreshStateRefreshing: NSLog(@%@----切換到:正在刷新狀態, refreshView.class); break; default: break; } } #pragma mark 刷新表格並且結束正在刷新狀態 - (void)doneWithView:(MJRefreshBaseView *)refreshView { // 刷新表格 [myTableView reloadData]; // (最好在刷新表格後調用)調用endRefreshing可以結束刷新狀態 [refreshView endRefreshing]; }
6.你可以通過調用beginRefreshing自動進入下拉刷新狀態。
7.你可以通過調用endRefreshing結束刷新狀態。
8.為瞭保證內部不泄露,最好在控制器的dealloc中釋放占用的內存
– (void)dealloc
{
[_header free];
[_footer free];
}
效果圖:
2014.02.08版本代碼更新功能:1.修復瞭“沒有數據時,上拉加載更多控件停滯不下”的BUG;
2.修復瞭示例程序中控制器的內存泄露。
2014.01.03版本代碼更新功能:
1.完美適配iOS6iOS7、iPhoneiPad橫豎屏
2.增加瞭刷新控件狀態改變的回調機制
3.解決瞭上拉加載更多殘留已久的莫名其妙BUG,增強瞭用戶體驗
4.刪除瞭冗餘的音頻播放功能
5.增加瞭內存釋放功能,解決瞭內存泄露的BUG
2013.01.03版本代碼更新功能:
1.適配iPhone橫豎屏、iPad橫豎屏;
2.不用再調用 free 方法來釋放刷新控件的資源;
3.演示瞭刷新控件的block回調;
4.演示瞭刷新控件在UICollectionView上的使用.
作者說:網上開源的下拉-上拉刷新控件,普遍封裝得過於復雜、耦合性強。因此本人特地花瞭點時間寫瞭一套無耦合、可插拔式的刷新控件,對項目中的其他代碼毫無侵入性,而且使用簡單,3行代碼就能集成刷新控件。
小編註:感謝開發者@M瞭個J 發佈代碼於Code4App.com。>
2014.02.08版本代碼更新功能:1.修復瞭“沒有數據時,上拉加載更多控件停滯不下”的BUG;
2.修復瞭示例程序中控制器的內存泄露。
2014.01.03版本代碼更新功能:
1.完美適配iOS6iOS7、iPhoneiPad橫豎屏
2.增加瞭刷新控件狀態改變的回調機制
3.解決瞭上拉加載更多殘留已久的莫名其妙BUG,增強瞭用戶體驗
4.刪除瞭冗餘的音頻播放功能
5.增加瞭內存釋放功能,解決瞭內存泄露的BUG
2013.01.03版本代碼更新功能:
1.適配iPhone橫豎屏、iPad橫豎屏;
2.不用再調用 free 方法來釋放刷新控件的資源;
3.演示瞭刷新控件的block回調;
4.演示瞭刷新控件在UICollectionView上的使用.
作者說:網上開源的下拉-上拉刷新控件,普遍封裝得過於復雜、耦合性強。因此本人特地花瞭點時間寫瞭一套無耦合、可插拔式的刷新控件,對項目中的其他代碼毫無侵入性,而且使用簡單,3行代碼就能集成刷新控件。
小編註:感謝開發者@M瞭個J 發佈代碼於Code4App.com。>
2014.02.08版本代碼更新功能:1.修復瞭“沒有數據時,上拉加載更多控件停滯不下”的BUG;
2.修復瞭示例程序中控制器的內存泄露。
2014.01.03版本代碼更新功能:
1.完美適配iOS6iOS7、iPhoneiPad橫豎屏
2.增加瞭刷新控件狀態改變的回調機制
3.解決瞭上拉加載更多殘留已久的莫名其妙BUG,增強瞭用戶體驗
4.刪除瞭冗餘的音頻播放功能
5.增加瞭內存釋放功能,解決瞭內存泄露的BUG
2013.01.03版本代碼更新功能:
1.適配iPhone橫豎屏、iPad橫豎屏;
2.不用再調用 free 方法來釋放刷新控件的資源;
3.演示瞭刷新控件的block回調;
4.演示瞭刷新控件在UICollectionView上的使用.
作者說:網上開源的下拉-上拉刷新控件,普遍封裝得過於復雜、耦合性強。因此本人特地花瞭點時間寫瞭一套無耦合、可插拔式的刷新控件,對項目中的其他代碼毫無侵入性,而且使用簡單,3行代碼就能集成刷新控件。
小編註:感謝開發者@M瞭個J 發佈代碼於Code4App.com。>
2014.02.08版本代碼更新功能:1.修復瞭“沒有數據時,上拉加載更多控件停滯不下”的BUG;
2.修復瞭示例程序中控制器的內存泄露。
2014.01.03版本代碼更新功能:
1.完美適配iOS6iOS7、iPhoneiPad橫豎屏
2.增加瞭刷新控件狀態改變的回調機制
3.解決瞭上拉加載更多殘留已久的莫名其妙BUG,增強瞭用戶體驗
4.刪除瞭冗餘的音頻播放功能
5.增加瞭內存釋放功能,解決瞭內存泄露的BUG
2013.01.03版本代碼更新功能:
1.適配iPhone橫豎屏、iPad橫豎屏;
2.不用再調用 free 方法來釋放刷新控件的資源;
3.演示瞭刷新控件的block回調;
4.演示瞭刷新控件在UICollectionView上的使用.
作者說:網上開源的下拉-上拉刷新控件,普遍封裝得過於復雜、耦合性強。因此本人特地花瞭點時間寫瞭一套無耦合、可插拔式的刷新控件,對項目中的其他代碼毫無侵入性,而且使用簡單,3行代碼就能集成刷新控件。
小編註:感謝開發者@M瞭個J 發佈代碼於Code4App.com。>
學習的路上,與君共勉。