国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

iOS上下拉刷新控件MJRefresh使用方法詳解

2019-10-21 18:48:04
字體:
供稿:網(wǎng)友

MJRefresh是一個好用的上下拉刷新的控件,github地址如下:https://github.com/CoderMJLee/MJRefresh很多app都使用這個控件,我們也來了解一下它的用法。下面主要是介紹在UITableView下的使用。

iOS上下拉刷新控件MJRefresh,iOS上下拉刷新控件,iOS上拉下拉刷新
使用

在github上下載之后,將MJRefresh文件添加到項(xiàng)目中,并且在需要使用的文件上引入MJRefresh.h。然后在該文件的viewDidLoad方法中指定tableView的header和footer,如下:

#import "MJRefreshTableViewController.h"#import "MJRefresh.h"@interface MJRefreshTableViewController ()@property (strong, nonatomic) IBOutlet UITableView *tableView;@end@implementation MJRefreshTableViewController- (void)viewDidLoad {[super viewDidLoad];__weak typeof(self) weakSelf = self;self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{ //刷新時候,需要執(zhí)行的代碼。一般是請求最新數(shù)據(jù),請求成功之后,刷新列表 [weakSelf loadNewData];}];self.tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{ //刷新時候,需要執(zhí)行的代碼。一般是請求更多數(shù)據(jù),請求成功之后,刷新列表 [weakSelf loadNoreData];}];}/** 請求獲取最新的數(shù)據(jù) */- (void)loadNewData {NSLog(@"請求獲取最新的數(shù)據(jù)");//這里假設(shè)2秒之后獲取到了最新的數(shù)據(jù),刷新tableview,并且結(jié)束刷新控件的刷新狀態(tài)__weak typeof(self) weakSelf = self;dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ //刷新列表 [weakSelf.tableView reloadData]; //拿到當(dāng)前的刷新控件,結(jié)束刷新狀態(tài) [weakSelf.tableView.mj_header endRefreshing];});}/** 請求獲取更多的數(shù)據(jù) */- (void)loadNoreData {NSLog(@"請求獲取更多的數(shù)據(jù)");//這里假設(shè)2秒之后獲取到了更多的數(shù)據(jù),刷新tableview,并且結(jié)束刷新控件的刷新狀態(tài)__weak typeof(self) weakSelf = self;dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ //刷新列表 [weakSelf.tableView reloadData]; //拿到當(dāng)前的刷新控件,結(jié)束刷新狀態(tài) [weakSelf.tableView.mj_footer endRefreshing];});}@end

按照app的實(shí)際情況來說,loadNoreData 和 loadNewData方法應(yīng)該是發(fā)送數(shù)據(jù)請求,而結(jié)束刷新控件的刷新狀態(tài)應(yīng)該是在請求失敗或者請求成功的方法中調(diào)用。

如果是帶動圖的刷新控件的話,就直接替換在viewDidLoad中的寫法即可。

- (void)viewDidLoad {[super viewDidLoad];__weak typeof(self) weakSelf = self;MJRefreshGifHeader *header = [MJRefreshGifHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];[header setImages:idleImages forState:MJRefreshStateIdle];[header setImages:pullingImages forState:MJRefreshStatePulling];[header setImages:refreshingImages forState:MJRefreshStateRefreshing];self.tableView.mj_header = header;}

其中idleImages,pullingImages,refreshingImages是圖片數(shù)組,分別對應(yīng)普通閑置狀態(tài),松開就可以進(jìn)行刷新的狀態(tài),正在刷新中的狀態(tài)等的圖片。注意,idleImages等圖片數(shù)組存儲的對象是UIImage。

如果只設(shè)置了refreshingImages,只要在刷新狀態(tài)下顯示圖片,其他狀態(tài)不顯示圖片。如果設(shè)置了idleImages或者pullingImages其中之一,所有狀態(tài)下都顯示設(shè)置的圖片。
同理,設(shè)置底部帶動畫效果的footer:

- (void)viewDidLoad {[super viewDidLoad];MJRefreshBackGifFooter *footer = [MJRefreshBackGifFooter footerWithRefreshingTarget:self refreshingAction:@selector(endRefreshing)];[footer setImages:idleImages forState:MJRefreshStateIdle];[footer setImages:pullingImages forState:MJRefreshStatePulling];[footer setImages:refreshingImages forState:MJRefreshStateRefreshing];self.tableView.mj_footer = footer;}

PO一張效果圖:

iOS上下拉刷新控件MJRefresh,iOS上下拉刷新控件,iOS上拉下拉刷新

header.stateLabel.hidden = YES;header.lastUpdatedTimeLabel.hidden = YES;

如果隱藏右邊狀態(tài)或者更新時間其中一行文字,則顯示的一行文字會垂直居中,效果如下:

iOS上下拉刷新控件MJRefresh,iOS上下拉刷新控件,iOS上拉下拉刷新

如果把右邊的兩行文字都隱藏了,只顯示圖片,則圖片居中,效果如下:

iOS上下拉刷新控件MJRefresh,iOS上下拉刷新控件,iOS上拉下拉刷新

如果覺得動畫頻率過快或者過低,可以修改MJRefresh以下位置。

iOS上下拉刷新控件MJRefresh,iOS上下拉刷新控件,iOS上拉下拉刷新

使用以下方法還可以修改顯示文字

[header setTitle:@"下拉刷新" forState:MJRefreshStateIdle];[header setTitle:@"釋放開始刷新哦~" forState:MJRefreshStatePulling];[header setTitle:@"正在快馬加鞭地刷新著呢" forState:MJRefreshStateRefreshing];

其他控件的用法

UICollectionView 和UIScrollView的用法與UITableView的用法一致,只需將上面所說的tableView.mj_header 改成 collectionView.mj_header 和 scrollView.mj_header 即可。例如:

self.collectionView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{ //刷新時候,需要執(zhí)行的代碼。一般是請求最新數(shù)據(jù),請求成功之后,刷新列表 [weakSelf loadNewData];}];self.scrollView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{ //刷新時候,需要執(zhí)行的代碼。一般是請求最新數(shù)據(jù),請求成功之后,刷新列表 [weakSelf loadNewData];}];

又因UIWebView 自帶一個UIScrollView的屬性,所以UIWebView也可以使用MJRefresh,用法如下:

self.webView.scrollView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{ //刷新時候,需要執(zhí)行的代碼。一般是請求最新數(shù)據(jù),請求成功之后,刷新列表 [weakSelf loadNewData];}];

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到IOS開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 山西省| 茌平县| 辽源市| 鹿泉市| 山阴县| 富裕县| 前郭尔| 通河县| 高碑店市| 延川县| 建宁县| 福州市| 邵武市| 乌兰浩特市| 桦甸市| 杭锦后旗| 呼玛县| 海淀区| 湛江市| 荃湾区| 揭阳市| 应用必备| 罗山县| 丰宁| 义乌市| 拉孜县| 墨竹工卡县| 磐安县| 南通市| 安陆市| 临清市| 进贤县| 恭城| 珠海市| 郓城县| 临洮县| 永昌县| 开鲁县| 辽中县| 双辽市| 卢龙县|