设为首页 加入收藏

TOP

MJRefresh自定义刷新动画(一)
2017-10-12 17:54:10 】 浏览:6736
Tags:MJRefresh 定义 刷新 动画

【一】常见用法

最原始的用法,耦合度低,但是不能统一管理。我们需要在每一个控制器都写以下代码,很繁琐,以后项目修改起来更繁琐,得一个控制器一个控制器的去定位、修改。

1.1 使用默认刷新(耦合度底,但是想统一修改起来特别麻烦)

self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
        //在这里执行刷新操作
    }];
self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(刷新方法)];

1.2 自定义刷新(耦合度底,但是想统一修改起来特别麻烦)

//1.2.1新建一个自定义刷新
    MJRefreshNormalHeader *customRef =[MJRefreshNormalHeader headerWithRefreshingBlock:^{
        //1.2.2在这里执行刷新操作
    }];
    //1.2.3 自定义刷新状态文字
    [customRef setTitle:@"普通闲置状态" forState:MJRefreshStateIdle];
    [customRef setTitle:@"松开就可以进行刷新的状态" forState:MJRefreshStatePulling];
    [customRef setTitle:@"正在刷新中的状态" forState:MJRefreshStateRefreshing];
    [customRef setTitle:@"即将刷新的状态" forState:MJRefreshStateWillRefresh];
    [customRef setTitle:@"所有数据加载完毕,没有更多的数据了" forState:MJRefreshStateNoMoreData];
    //1.2.4添加下拉刷新
    self.tableView.mj_header = customRef;

    //一些其他属性设置
    /*
    // 设置字体
    customRef.stateLabel.font = [UIFont systemFontOfSize:15];
    customRef.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:14];

    // 设置颜色
    customRef.stateLabel.textColor = [UIColor redColor];
    customRef.lastUpdatedTimeLabel.textColor = [UIColor blueColor];
    // 隐藏时间
    customRef.lastUpdatedTimeLabel.hidden = YES;
    // 隐藏状态
    customRef.stateLabel.hidden = YES;
     // 设置自动切换透明度(在导航栏下面自动隐藏)
     customRef.automaticallyChangeAlpha = YES;
     */

【二】正确用法(统一管理项目所有下拉刷新控件)

一共有6种刷新对象(图片末尾带红色的都是)。

假如我们想实现默认的下拉刷新,
【2.1】只要新建一个对象,
继承自MJRefreshNormalHeader

#import "MJRefreshNormalHeader.h"

@interface HSNormalHeader : MJRefreshNormalHeader

@end

【2.2】然后重写方法- (void)prepare,重写后记得实现[super prepare]

#import "HSNormalHeader.h"

@implementation HSNormalHeader
#pragma mark - 重写父类的方法
- (void)prepare{
    [super prepare];

    //所有的自定义东西都放在这里
    [self setTitle:@"普通闲置状态" forState:MJRefreshStateIdle];
    [self setTitle:@"松开就可以进行刷新的状态" forState:MJRefreshStatePulling];
    [self setTitle:@"正在刷新中的状态" forState:MJRefreshStateRefreshing];
    [self setTitle:@"即将刷新的状态" forState:MJRefreshStateWillRefresh];
    [self setTitle:@"所有数据加载完毕,没有更多的数据了" forState:MJRefreshStateNoMoreData];
    //一些其他属性设置
    /*
     // 设置字体
     self.stateLabel.font = [UIFont systemFontOfSize:15];
     self.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:14];

     // 设置颜色
     self.stateLabel.textColor = [UIColor redColor];
     self.lastUpdatedTimeLabel.textColor = [UIColor blueColor];
     // 隐藏时间
     self.lastUpdatedTimeLabel.hidden = YES;
     // 隐藏状态
     self.stateLabel.hidden = YES;
     // 设置自动切换透明度(在导航栏下面自动隐藏)
     self.automaticallyChangeAlpha = YES;
     */
}

//如果需要自己重新布局子控件
- (void)placeSubviews{
    [super placeSubviews];

    //如果需要自己重新布局子控件,请在这里设置
    //箭头
//    self.arrowView.center =
}
@end

然后我们再对应的控制器实现刷新只要这样既可:
【2.3】引入自定义对象,比如叫HSNormalHeader(继承自MJRefreshNormalHeader),

#import "HSNormalHeader.h"

【2.4】在需要下拉刷新的控制器这样实现既可

self.tableView.mj_header = [HSNormalHeader headerWithRefreshingBlock:^{
        //刷新请求
    }];

同理,对应的下拉动画只需新建对象继承自MJRefreshGifHeader

#pragma mark - 重写父类的方法
- (void)prepare{
    [super prepare];

    // 设置普通状态的动画图片
    NSMutableArray *idleImages = [NSMutableArray array];
    for (NSUInteger i = 1; i<=60; i++
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇App Today Extension开发注意事项 下一篇Qt5 开发 iOS 应用之访问 SQLite ..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目