美文网首页各种第三方
MJRefresh的基本使用及简单封装

MJRefresh的基本使用及简单封装

作者: 不予回答 | 来源:发表于2016-07-21 00:27 被阅读1666次

项目中一般都会用到上拉或者下拉刷新,平时用的最多的框架为MJRefresh,这个框架提供了一些简单的API,但初次接触的人难免束手束脚,不知如何下手。

本文主要讲讲MJRefresh的最基本使用方法及对代码进行简单封装

1.基本使用

MJRefresh提供了一个基于UIScrollview的分类,分类增加了mj_header和 mj_footer的属性,分别对应下拉刷新控件和上拉刷新控件,我们拿到tableView或collectionView的mj_header和mj_footer进行属性设置并开启刷新就行了

以下为实现代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self setupRefresh];
}
- (void)setupRefresh {
    
    //创建一个下拉刷新控件 在开始刷新后会调用此block
    MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
        //加载数据(包括刷新tableView)
        [self loadNewTopics];
        //结束刷新
        [self.tableView.mj_header endRefreshing];
    }];
    
    //自动改变透明度 (当控件被导航条挡住后不显示)
    header.automaticallyChangeAlpha = YES;
    
    // 设置各种状态下的刷新文字
    [header setTitle:@"下拉可以刷新" forState:MJRefreshStateIdle];
    [header setTitle:@"松开立即刷新" forState:MJRefreshStatePulling];
    [header setTitle:@"正在刷新..." forState:MJRefreshStateRefreshing];
    
    // 设置字体
    header.stateLabel.font = [UIFont systemFontOfSize:13];
    header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:13];
    
    // 设置颜色
    header.stateLabel.textColor = [UIColor grayColor];
    header.lastUpdatedTimeLabel.textColor = [UIColor blueColor];
    
    //初始化时开始刷新
    [header beginRefreshing];
    
    self.tableView.mj_header = header;
}

2.简单封装

在一个程序中用到下拉刷新的地方很有可能不止一处,在实际使用的时候没有必要在每个控制器中都进行详细的设置,故新建一个继承MJRefreshNormalHeader的类,在类里面设置header或footer的相关属性,在调用的时候即可实现“一行代码解决下拉刷新”

以下为详细代码:(footer封装部分类似)

封装部分:
DGLRefreshHeader.h

DGLRefreshHeader.h
#import <MJRefresh/MJRefresh.h>

@interface DGLRefreshHeader : MJRefreshNormalHeader

@end

DGLRefreshHeader.m

DGLRefreshHeader.m

#import "DGLRefreshHeader.h"

@implementation DGLRefreshHeader

- (instancetype)init {
    
    self = [super init];
    if (self) {
        
        //自动改变透明度 (当控件被导航条挡住后不显示)                   
        self.automaticallyChangeAlpha = YES;
        
        // 设置各种状态下的刷新文字
        [self setTitle:@"下拉可以刷新" forState:MJRefreshStateIdle];
        [self setTitle:@"松开立即刷新" forState:MJRefreshStatePulling];
        [self setTitle:@"正在刷新..." forState:MJRefreshStateRefreshing];
        
        
        // 设置字体
        self.stateLabel.font = [UIFont systemFontOfSize:13];
        self.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:13];
        
        // 设置颜色
        self.stateLabel.textColor = [UIColor grayColor];
        self.lastUpdatedTimeLabel.textColor = [UIColor blueColor];
        
        //初始化时开始刷新
        [self beginRefreshing];
        
    }
    return self;
}

@end

代码实现部分viewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self setupRefresh];
}
- (void)setupRefresh {
    
    //下拉刷新 在开始刷新后会调用此block
    self.tableView.mj_header = [DGLRefreshHeader headerWithRefreshingBlock:^{
        //加载数据(包括刷新tableView)
        [self loadNewTopics];
        //结束刷新
        [self.tableView.mj_header endRefreshing];
    }];
    
    //上拉刷新 在开始刷新后会调用此block
    self.tableView.mj_footer = [DGLRefreshFooter footerWithRefreshingBlock:^{
        [self loadMoreTopics];
        [self.tableView.mj_footer endRefreshing];
    }];
}

由此可见封装过后减少了许多重复代码

相关文章

  • MJRefresh的基本使用及简单封装

    项目中一般都会用到上拉或者下拉刷新,平时用的最多的框架为MJRefresh,这个框架提供了一些简单的API,但初次...

  • 简单封装MJRefresh

    #import "MJRefreshNormalHeader.h" @interfaceXHWRefreshNor...

  • MJRefresh简单使用

    MJRefresh简单使用 导入MJRefresh.h文件即可

  • MJRefresh简单封装(隔离)

    按照作者的Demo示例用可以,但是个人总觉得敲代码太多不太好,哪天升级了就得找到使用的地方改改改。就想着能够封装下...

  • MJRefresh

    MJRefresh原理分析从MJRefresh源码学习上拉下刷新的基本原理MJRefresh源码阅读使用Xtrac...

  • MJRefresh的基本使用

    该框架的作者已经在GitHub上讲解了框架的基本使用方法https://github.com/CoderMJLee...

  • MJRefresh简单使用

    一、默认下拉刷新和上拉加载更多(通过block) 另一种默认下拉刷新和上拉加载更多(通过action), 有时候我...

  • MJRefresh的使用

    MJRefresh的封装和使用http://www.jianshu.com/p/4ea427bab0afhttps...

  • MJRefresh的简单使用

    俗话说“工欲善其事,必先利其器”一个好的成熟的第三方库,是开发路上的一把利器,可节约很多开发成本。先简单的介绍下上...

  • MJRefresh的简单使用

    -(void)history_addRefresh{ //下拉 MJRefreshNormalHeader...

网友评论

本文标题:MJRefresh的基本使用及简单封装

本文链接:https://www.haomeiwen.com/subject/qnxbjttx.html