iOS刷新第三方MJRefresh的基本使用
阿新 • • 發佈:2017-05-15
one 查看 idl ava cocoapod arc user use 實例
mjv587.png
mj87v5.png
(下拉刷新01-普通)
(下拉刷新02-動畫圖片)
iOS刷新第三方MJRefresh的基本使用
iOS開發中最好用的刷新第三方框架 MJRefresh
GitHub : https://github.com/CoderMJLee/MJRefresh
UIRefreshControl的介紹
1,UIRefresh是蘋果自帶的刷新控件
2,支持iOS6.0之後的版本
3,一旦被分配到一個UITableViewController,控件的框架是自動管理
UIRefreshControl基本使用
// 刷新中得狀態判斷,只讀屬性,根據狀態可做一些自定義的事情
@property (nonatomic, readonly, getter=isRefreshing) BOOL refreshing;
//實例化對象(裏面有init,UIRefreshControl的初始化)
UIRefreshControl *control = [[UIRefreshControl alloc] init];
//設置UIRefreshControl控件的顏色(菊花和文字)
control.tintColor = [UIColor redColor];
//添加到tableView中,默認尺寸和位置都已經設置好
[self.tableView addSubview:control];
// 下拉刷新文字描述,自定義
@property (nonatomic, retain) NSAttributedString *attributedTitle
// 開始刷新
- (void)beginRefreshing NS_AVAILABLE_IOS(6_0);
// 結束刷新,在確定獲得想要的加載數據之後調用
- (void)endRefreshing NS_AVAILABLE_IOS(6_0);
MJRefresh的介紹
MJRefresh是繼承於UIView的自定義刷新控件
支持哪些控件的刷新?
UIScrollView、UITableView、UICollectionView、UIWebView
從iOS9之後,用MJRefresh框架的時候使用它的屬性和方法,大部分需要加入mj_ 開頭作為前綴
- 該框架純ARC,兼容的系統>=iOS6.0、iPhone\iPad橫豎屏
如果使用MJRefresh
cocoapods導入:pod ‘MJRefresh‘ (cocoapods另一篇博客裏面有寫)
手動導入:
將MJRefresh文件夾中的所有文件拽入項目中
導入主頭文件:#import "MJRefresh.h"
#主要是實現上拉刷新和下拉刷新
//下拉刷新
self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewTopic)];
//自動更改透明度
self.tableView.mj_header.automaticallyChangeAlpha = YES;
//進入刷新狀態
[self.tableView.mj_header beginRefreshing];
//上拉刷新
self.tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreTopic)];
//結束頭部刷新
[weakSelf.tableView.mj_header endRefreshing];
//結束尾部刷新
[weakSelf.tableView.mj_footer endRefreshing];
MJRefresh類結構圖
mjv587.png
mj87v5.png
具體使用
默認的下拉刷新 - 01
self.tableView.header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
// 進入刷新狀態後會自動調用這個block
}];
//或
// 設置回調(一旦進入刷新狀態,就調用target的action,也就是調用self的loadNewData方法)
self.tableView.header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
// 馬上進入刷新狀態
[self.tableView.header beginRefreshing];
[
(下拉刷新01-普通)
下拉動畫刷新 - 02
// 刷新控件的狀態
typedef NS_ENUM(NSInteger, MJRefreshState) {
/** 普通閑置狀態 */
MJRefreshStateIdle = 1,
/** 松開就可以進行刷新的狀態 */
MJRefreshStatePulling,
/** 正在刷新中的狀態 */
MJRefreshStateRefreshing,
/** 即將刷新的狀態 */
MJRefreshStateWillRefresh,
/** 所有數據加載完畢,沒有更多的數據了 */
MJRefreshStateNoMoreData
};
// 設置回調(一旦進入刷新狀態,就調用target的action,也就是調用self的loadNewData方法)
MJRefreshGifHeader *header = [MJRefreshGifHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)];
// 設置普通狀態的動畫圖片 (idleImages 是圖片)
[header setImages:idleImages forState:MJRefreshStateIdle];
// 設置即將刷新狀態的動畫圖片(一松開就會刷新的狀態)
[header setImages:pullingImages forState:MJRefreshStatePulling];
// 設置正在刷新狀態的動畫圖片
[header setImages:refreshingImages forState:MJRefreshStateRefreshing];
// 設置header
self.tableView.mj_header = header;
[
(下拉刷新02-動畫圖片)
下拉隱藏的屬性
// 隱藏時間
header.lastUpdatedTimeLabel.hidden = YES;
// 隱藏狀態
header.stateLabel.hidden = YES;
自定義的文字和動畫圖片的設置
#使用上拉刷新和下拉刷新一般都是自定義頭部和尾部的類
例如: 頭部刷新的
@interface JHHeader : MJRefreshNormalHeader
#在.m文件中設置
/** 初始化設置 */
- (void)prepare
{
[super prepare];
//創建UIImageView
UIImageView *logoView = [[UIImageView alloc] init];
//添加圖片
logoView.image = [UIImage imageNamed:@"meinv02"];
//將該UIImageView添加到當前header中
[self addSubview:logoView];
self.logoView = logoView;
//根據拖拽的情況自動切換透明度
self.automaticallyChangeAlpha = YES;
//隱藏時間
self.lastUpdatedTimeLabel.hidden = YES;
//設置文字顏色
self.stateLabel.textColor = [UIColor redColor];
}
/**
* 擺放子控件
*/
- (void)placeSubviews
{
[super placeSubviews];
self.logoView.x = 0;
self.logoView.width = self.width;
self.logoView.height = 100;
self.logoView.y = -self.logoView.height;
}
自定義尾部刷新
例:創建一個JHFooter類 繼承於MJRefreshAutoNormalFooter
@interface JHFooter : MJRefreshAutoNormalFooter
#在.m文件中設置
/** 初始化 */
- (void)prepare
{
[super prepare];
self.stateLabel.textColor = [UIColor grayColor];
[self setTitle:@"向上拉加載更多內容喔..." forState:MJRefreshStateIdle];
[self setTitle:@"正在連接網絡加載中...." forState:MJRefreshStateRefreshing];
UISwitch *swith = [[UISwitch alloc] init];
[self addSubview:swith];
UIImageView *logoView = [[UIImageView alloc] init];
logoView.image = [UIImage imageNamed:@"meinv02"];
[self addSubview:logoView];
self.logoView = logoView;
}
/**
* 擺放子控件
*/
- (void)placeSubviews
{
[super placeSubviews];
self.logoView.x = 0;
self.logoView.y = self.height;
self.logoView.width = self.width;
self.logoView.height = 100;
}
大部分參考自MJRefresh 的 README.md
該框架還有很多強大的功能,詳情可以進入最上面給的github下載地址中查看
給出的這些應該足夠平時的開發,希望多多給建議
this article author : 會跳舞的獅子
iOSiOS刷新第三方MJRefresh的基本使用