美文网首页
自定义MJRefresh上下拉刷新

自定义MJRefresh上下拉刷新

作者: BabyNeedCare | 来源:发表于2021-12-03 14:22 被阅读0次

    UI定义了一套gif, 用于上下拉刷新。项目里是用MJRefresh做上下拉刷新的。
    做这块并不难,但是要清晰,自定义内容应该在哪里配置处理。

    - (void)placeSubviews {
        
        [super placeSubviews];
    //自定义UI
    }
    
    - (void)prepare {
        
        [super prepare];
       //frame相关
    }
    
    以上两个地方是关键。
    

    项目中的配置:

    .h文件:
    #import <Foundation/Foundation.h>
    
    /** 进入刷新状态的回调 */
    typedef void (^refreshingBlock)(void);
    
    @class YZRefreshGifHeader,YZRefreshGifFooter;
    
    @interface YZMJRefreshTool : NSObject
    
    + (YZRefreshGifHeader *)headerWithRefreshingBlock:(refreshingBlock)refreshingBlk ;
    
    + (YZRefreshGifFooter *)footerWithRefreshingBlock:(refreshingBlock)refreshingBlk;
    
    @end
    
    
    @interface YZRefreshGifHeader : MJRefreshGifHeader
    
    
    @end
    
    
    @interface YZRefreshGifFooter : MJRefreshBackGifFooter
    
    
    @end
    
    
    .m文件:
    #import "YZMJRefreshTool.h"
    #define customGifViewHeight 100
    #define customImageSize CGSizeMake(50, 50)
    
    @implementation YZMJRefreshTool
    
    + (YZRefreshGifHeader *)headerWithRefreshingBlock:(refreshingBlock)refreshingBlk {
        
        YZRefreshGifHeader *header = [YZRefreshGifHeader headerWithRefreshingBlock:^{
            
            if (refreshingBlk) {
                
                refreshingBlk();
            }
        }];
        
        return header;
    }
    
    + (YZRefreshGifFooter *)footerWithRefreshingBlock:(refreshingBlock)refreshingBlk {
        
        YZRefreshGifFooter *footer = [YZRefreshGifFooter footerWithRefreshingBlock:^{
            
            if (refreshingBlk) {
                
                refreshingBlk();
            }        
        }];
        
        return footer;
    }
    
    @end
    
    
    @interface YZRefreshGifHeader()
    
    @property (strong, nonatomic) UIImageView *smartGorImageView;
    
    @end
    
    @implementation YZRefreshGifHeader
    
    - (UIImageView *)smartGorImageView {
        
        if (!_smartGorImageView) {
            
            _smartGorImageView = [[UIImageView alloc]init];
            
            [self addSubview:_smartGorImageView];
        }
        
        return _smartGorImageView;
    }
    
    - (void)placeSubviews {
        
        [super placeSubviews];
        
        self.smartGorImageView.image = [UtilityClass getGifImage];
        
        self.lastUpdatedTimeLabel.hidden = YES;
        
        self.stateLabel.hidden = YES;
    }
    
    - (void)prepare {
        
        [super prepare];
        
        self.mj_h = customGifViewHeight;
        
        [self.smartGorImageView mas_makeConstraints:^(MASConstraintMaker *make) {
            
            make.center.equalTo(self);
            
            make.size.mas_equalTo(customImageSize);
            
        }];
    }
    
    @end
    
    
    @interface YZRefreshGifFooter()
    
    @property (strong, nonatomic) UIImageView *smartGorImageView;
    
    @end
    
    @implementation YZRefreshGifFooter
    
    - (UIImageView *)smartGorImageView {
        
        if (!_smartGorImageView) {
            
            _smartGorImageView = [[UIImageView alloc]init];
            
            [self addSubview:_smartGorImageView];
        }
        
        return _smartGorImageView;
    }
    
    - (void)placeSubviews {
        
        [super placeSubviews];
        
        self.smartGorImageView.image = [UtilityClass getGifImage];
        
        self.stateLabel.hidden = YES;
    }
    
    - (void)prepare {
        
        [super prepare];
        
        self.mj_h = customGifViewHeight;
        
        [self.smartGorImageView mas_makeConstraints:^(MASConstraintMaker *make) {
            
            make.center.equalTo(self);
            
            make.size.mas_equalTo(customImageSize);
            
        }];
    }
    
    @end
    

    相关文章

      网友评论

          本文标题:自定义MJRefresh上下拉刷新

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