2025-05-17

在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];
}

 

 

效果圖:

  • iOS
    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。>

  • iOS
    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。>

  • iOS
    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。>

  • iOS
    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。>

     

    學習的路上,與君共勉。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *