iOS開發-ios7下拉重新整理 上提載入快速整合
阿新 • • 發佈:2018-12-21
在ios7之前,一直在使用開源的EGO庫。但是,在使用過程中發現,普遍封裝得過於複雜、耦合性強,不利於整合到自己的專案中。
另外,在ios7之後,一些原有的下拉重新整理,上提載入控制元件表現的就不是那麼出色了。除了可能出錯外,也不符合扁平化的風格。
後來,在code4App上發現了一個大牛上傳了一個開原始碼, 僅需幾行程式碼就可以為UITableView或者CollectionView加上下拉重新整理或者上拉重新整理功能。可以自定義上下拉重新整理的文字說明。
下載下來自己試了下,發現不錯。 mark下。
下面紀錄下自己的整合過程,當然,作者所給的demo裡面已經很詳細的給出了。 這裡只不過是紀錄下自己的實現過程而已。
1.將MJRefresh資料夾整個匯入所需的工程中。
2.資料夾中的MJRefresh.bundle--->[email protected] 圖片可自行替換,這個會在重新整理過程中顯示。
3.可以在MJRefreshConst.h和MJRefreshConst.m檔案中自定義顯示的文字內容和文字顏色。
4.只要你的view能夠滾動,就能整合這個控制元件,比如UIScrollView、UITableView、UICollectionView
5.在需要使用的地方,加入如下程式碼即可。
5.1 匯入標頭檔案
#import "MJRefresh.h"
5.2 遵從協議
@interface ViewController ()<MJRefreshBaseViewDelegate>
5.3 為你的view新增控制元件5.4實現代理方法MJRefreshFooterView *footer = [MJRefreshFooterView footer]; footer.scrollView = myTableView; footer.delegate = self; MJRefreshHeaderView *header = [MJRefreshHeaderView header]; header.scrollView = myTableView; header.delegate = self;
#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];}
效果圖:學習的路上,與君共勉。