iOS刷新第三方MJRefresh的基本使用

iOS开发中最好用的刷新第三方框架 MJRefresh

GitHub : https://github.com/CoderMJLee/MJRefreshgit

UIRefreshControl的介绍

1,UIRefresh是苹果自带的刷新控件
2,支持iOS6.0以后的版本
3,一旦被分配到一个UITableViewController,控件的框架是自动管理github

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;

[ui


(下拉刷新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下载地址中查看
给出的这些应该足够平时的开发,但愿多多给建议atom



文/会跳舞的狮子(简书做者) 原文连接:http://www.jianshu.com/p/e1a40f46aed7 著做权归做者全部,转载请联系做者得到受权,并标注“简书做者”。
相关文章
相关标签/搜索