MJRefresh分析-自定义刷新控件

MJRefresh 类结构图:

MIRefreshComponent:刷新控件的基类

MJRefreshHeader:基础的下拉刷新控件(Header)

MJRefreshStateHeader:带有状态文字的下拉刷新控件

MJRefreshNormalHeader:默认的下拉刷新控件

MJRefreshGitHeader:带动图的下拉刷新控件

 

MJRefreshFooter:基础的下拉刷新控件(Footer)

MJRefreshBackFooter:会回弹到底部的下拉刷新控件

MJRefreshAutoFooter:会自动刷新的上拉刷新控件

MJRefreshBackStateFooter:带有状态文字的上拉加载控件MJRefreshAutoStateFooter:带有状态文字的上拉加载控件

MIRefreshBackNormalFooter:默认的上拉加载控件

MIRefreshBackGifFooter:带动图的上拉加载控件

MIRefreshAutoNormalFooter:默认的上拉加载控件

MIRefreshAutoGifFooter:带动图的上拉加载控件

使用:

+ (MJRefreshGifHeader *)headerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock{

    

    MJRefreshGifHeader *header = [MJRefreshGifHeader headerWithRefreshingBlock:refreshingBlock];

    header.lastUpdatedTimeLabel.hidden = YES;

    header.stateLabel.hidden = YES;

    

    NSMutableArray *a = @[].mutableCopy;

    for (int i =0 ; i<4; i++) {

        [a addObject:[UIImage imageNamed:[NSString stringWithFormat:@"下啦刷新-%d",i+1]]];

    }

    [header setImages:a duration:0.5f forState:MJRefreshStateRefreshing];

    [header setImages:@[[UIImage imageNamed:@"松手加载-1"],[UIImage imageNamed:@"松手加载-2"]] duration:0.3f forState:MJRefreshStatePulling];

    [header setImages:@[[UIImage imageNamed:@"用力一点-1"],[UIImage imageNamed:@"用力一点-2"]] duration:0.5f forState:MJRefreshStateIdle];

    header.backgroundColor = [UIColor clearColor];

    return header;

}

 

+ (MJRefreshAutoNormalFooter *)footerWithRefreshingBlock:(MJRefreshComponentRefreshingBlock)refreshingBlock{

    MJRefreshAutoNormalFooter *footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:refreshingBlock];

    footer.backgroundColor = [UIColor clearColor];

    footer.automaticallyRefresh = YES;

    footer.triggerAutomaticallyRefreshPercent = -3.0;

    return footer;

}

_collectionView = [[XBHomeCollectionView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];

    _collectionView.homeDelegate = self;

    _collectionView.backgroundColor = kBlackColor;

    XBWeakSelf

    _collectionView.mj_header = [XBTool headerWithRefreshingBlock:^{

        XBStrongSelf

        [self reloadData:NO];

    }];

    _collectionView.mj_footer = [XBTool footerWithRefreshingBlock:^{

        XBStrongSelf

        [self reloadData:YES];

    }];

    [self.view addSubview:_collectionView];

    self.collectionView.mj_footer.hidden = YES;

 

-(void)reloadData:(BOOL)append {

    if (!append) {

        self.currentPage = 1;

        [_dataArray removeAllObjects];

    }else {

        self.currentPage += 1;

    }

    [self getData:append];

}

- (void)getData:(BOOL)append{

    XBWeakSelf

    //获取精选列表

    NSDictionary * dic = @{@"currentPage":[NSString stringWithFormat:@"%ld",(long)self.currentPage],

                           @"pageSize":[NSString stringWithFormat:@"%ld",(long)DefaultPageSize]

                           };

    [[HKNetService jsonManager] sendPOSTWithUrl:SERVER_HOMEHANDPICKLIST params:dic success:^(HKURLResponse *response, HKResultMessage *resultMessage) {

        XBStrongSelf

        NSDictionary * dic = response.result;

        NSArray * array = [dic valueForKey:@"data"];

 

        for (NSDictionary *dic in array) {

            XBHomeModel * model = [[XBHomeModel alloc] init];

            [model setValuesForKeysWithDictionary:dic];

            [self.dataArray addObject:model];

        }

        if ([response.responseData isKindOfClass:[NSDictionary class]] || [response.responseData isKindOfClass:[NSArray class]]) {

            NSString *b = [response.responseData JF_jsonString];

            [XBUserDefaults setObject:b forKey:HandpickListData];

            [XBUserDefaults synchronize];

        }

        [self endRefreshing];

        if (self.dataArray.count) {

            dispatch_async(dispatch_get_main_queue(), ^{

                [self.collectionView setDataArray:self.dataArray];

            });

        }

        if (array.count<DefaultPageSize) {

            self.collectionView.mj_footer.hidden = YES;

        }

        if (array.count == 0) {

            [self.collectionView.mj_footer endRefreshingWithNoMoreData];

        }

 

    } failure:^(HKURLResponse *response, HKResultMessage *resultMessage) {

        XBStrongSelf

        [self endRefreshing];

        [HKToast showErrorMessage:resultMessage];

    }];

}

- (void)endRefreshing {

    [self.collectionView.mj_header endRefreshing];

    [self.collectionView.mj_footer endRefreshing];

}

下拉刷新-动画图片

// 设置回调(一旦进入刷新状态,就调用target的action,也就是调用self的loadNewData方法)
MJRefreshGifHeader *header = [MJRefreshGifHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewData)]; // 设置普通状态的动画图片 [header setImages:idleImages forState:MJRefreshStateIdle]; // 设置即将刷新状态的动画图片(一松开就会刷新的状态) [header setImages:pullingImages forState:MJRefreshStatePulling]; // 设置正在刷新状态的动画图片 [header setImages:refreshingImages forState:MJRefreshStateRefreshing]; // 设置header self.tableView.mj_header = header;

猜你喜欢

转载自www.cnblogs.com/StevenHuSir/p/MJRefreshCustom.html
今日推荐