tableView上拉刷新上下跳动
2017-11-14 本文已影响8人
4VZhang
上tableView部分代码:
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return self.sitcomListM.data.videos.count ? self.sitcomListM.data.videos.count+1 : 1;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
if (!self.sitcomListM.data.videos.count) {
JSBNoDataCell *noDataCell = [tableView dequeueReusableCellWithIdentifier:kNoDataCellReuseID forIndexPath:indexPath];
noDataCell.errorMsg = @"微客堂列表为空,请稍后刷新";
noDataCell.selectionStyle = UITableViewCellSelectionStyleNone;
return noDataCell;
}else {
if ( !indexPath.row) { // 会员卡提示栏
JSBVipPurchaseCell *cell = [tableView dequeueReusableCellWithIdentifier:kVipCellReuseID forIndexPath:indexPath];
[cell configureWithDataModel:self.sitcomListM.data buttonClickBlock:nil ];
return cell;
}else{ // 视频列表
JSBMoviePlayCell *cell = [tableView dequeueReusableCellWithIdentifier:kTableViewCellReuseID forIndexPath:indexPath];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
//设置 cell 的数据
JSBMoviePlaySitcomListDataVideosModel *videosM = self.sitcomListM.data.videos[indexPath.row-1];
cell.videosM = videosM;
return cell;
}
}
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (!self.sitcomListM.data.videos.count) {
return UITableViewAutomaticDimension;
}
return indexPath.row == 0 ?(!_type?36:186):186;
}
- (UITableView *)tableView {
if (!_tableView) {
// 底部 tableView
_tableView = [[UITableView alloc]initWithFrame:CGRectZero style:UITableViewStylePlain];
_tableView.estimatedRowHeight = 215;
_tableView.separatorStyle = UITableViewCellSelectionStyleNone;
[_tableView registerClass:[moviePlayCell class] forCellReuseIdentifier:kTableViewCellReuseID];
[_tableView registerClass:[vipPurchaseCell class] forCellReuseIdentifier:kVipCellReuseID];
[_tableView registerClass:[noDataCell class] forCellReuseIdentifier:kNoDataCellReuseID];
_tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadNewest)];
_tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadHistory)];
_tableView.tableFooterView = [UIView new];
_tableView.dataSource = self;
_tableView.delegate = self;
}
return _tableView;
}
上拉刷新界面跳动bug.gif
界面在cell铺满整个屏幕是,上拉/下拉刷新 都没明显跳动;
界面中cell个数较少,不能铺满整个屏幕时,下拉刷新没有明显跳动,上拉刷新有明显跳动,并且会出现如下图的bug;
经过排除mjrefresh控件和项目中数据问题,最后bug问题锁定在tableview的预估行高(215)超出实际行高差距(36)太多导致出现上拉刷新跳动并出现相关bug;
预估行高设置为50
_tableView.estimatedRowHeight = 50;
该bug得以解决!