最近这几天一直在研究ios刷新的第三方库MJRefresh,相信很多做开发的朋友都接触过,我用的是swift2.3和OC混编,话不多说,分享一下我的心得吧!
MJRefresh分头部(header)和底部(footer)。在MJRefresh里创建好了一个mj_header和mj_footer,使用这两个属性对MJRefresh的样式进行修改。
在自己的代码里:
self.mytableview.mj_header =
MJRefreshNormalHeader(refreshingTarget: self, refreshingAction:#selector(controller.readdata))//括号里是你读取数据的方法,当然你可以创建一个新的方法添加你的判断逻辑,把这个读取数据的方法也放进去,然后这里括号就写你新创建的方法
self.mytableview.mj_header.beginRefreshing()//调用这个方法开始刷新
如果想要改变刷新时的字体形态,刷新图片等
let Header = MJRefreshGifHeader (refreshingTarget: self, refreshingAction:#selector(ViewController.headRefresh)) // 设置各种状态动画图片
Header .setImages([AnyObject]!, forState: <#T##MJRefreshState#>)
/** 普通闲置状态 */
MJRefreshStateIdle = 1,
/** 松开就可以进行刷新的状态 */
MJRefreshStatePulling,
/** 正在刷新中的状态 */
MJRefreshStateRefreshing,
/** 即将刷新的状态 */
MJRefreshStateWillRefresh,
/** 所有数据加载完毕,没有更多的数据了 */
MJRefreshStateNoMoreData 5种状态的图片随你添加
// 设置header
self.mytableview.mj_header = Header
下拉刷新03-隐藏时间
// 隐藏时间
Header.lastUpdatedTimeLabel.hidden = true
// 隐藏状态
Header.stateLabel.hidden = true
下拉刷新05-自定义文字
// 设置文字
Header .setTitle(<#T##title: String!##String!#>, forState: <#T##MJRefreshState#>) 前边是string类型,后边的type同动画图片设置的type
// 设置字体
Header.stateLabel.font = UIFont.systemFontOfSize(50.0)
Header.lastUpdatedTimeLabel.font = UIFont.systemFontOfSize(50.0)//括号里是CGFloat类型,数字随你填
// 设置颜色
Header.stateLabel.textColor = UIColor.whiteColor()
Header.lastUpdatedTimeLabel.textColor = UIColor.whiteColor()
(下拉刷新05-自定义文字)
footer和header一样
self.mytableview.mj_footer = MJRefreshBackNormalFooter(refreshingTarget: self, refreshingAction: #selector(ViewController.footRefresh))
let Footer = MJRefreshBackGifFooter(refreshingTarget: self, refreshingAction:#selector(BankCardViewController.footRefresh) MJRefreshBackGifFooter初始化footer是隐藏在底部
let Footer = MJRefreshAutoGifFooter(refreshingTarget: self, refreshingAction:#selector(BankCardViewController.footRefresh) MJRefreshAutoGifFooter初始化footer是紧贴header下方
self.mytableview.mj_footer = Footer
其他的方法和header没多大区别
在readdata结束时,添加self.endRefresh()用来结束刷新
做一个小小的判断self.mytableview.mj_header.endRefreshing()
self.mytableview.mj_footer.endRefreshing()
//判断是否加载完数据(加载的datalist是否等于总条数listcount,如果小于,就可以继续刷新,==就结束刷新)
if(dataList.count < listCount){
//上拉继续刷新
self.mytableview.mj_footer.endRefreshing()
}else{
//全部加载完毕
self.mytableview.mj_footer.endRefreshingWithNoMoreData()
}
}
如果那里有错,欢迎大家指出错误,共同进步!