day10-UITableView-自定不等高的cell-sto

2020-06-07  本文已影响0人  js_huh

自定不等高的cell-storyboard版 01-无配图
自定不等高的cell-storyboard版 02-有配图


是什么?
因cell的高度,在storyboard的里面固定了.那么当不显示"配图"的情况下,cell的高度就显得太高了,不协调,该怎么办呢?


答: 第2种方法,直接修改cell的高度 frame 和 storyboard结合方式.
- (void)awakeFromNib
{
    [super awakeFromNib];
    //手动设置,lable的宽度,否则不会换行.
    self.txtLbl.preferredMaxLayoutWidth = [UIScreen mainScreen].bounds.size.width - 20;
}

示例代码:

- (CGFloat)cellHeight{
    //强制刷新
    [self layoutIfNeeded];
    //有配图时,cell高度=配图的Y + 间距10
    if (self.statu.picture){
        return CGRectGetMaxY(self.pictureImg.frame)+10;
    }else{ //无配图时,cell高度 = 正文的Y + 10
        return CGRectGetMaxY(self.txtLbl.frame)+10;
    }
}
/*
heightForRowAtIndexPath -- 里面的cell是临时的cell
不会显示宽/高,那么需要手动设置最大宽度.
临时cell 
(cell没有返回,也就是说没有创建出cell.)
    作用:为了传递indexPath这一行对应的模型数据,
        通过模型数据去布局所有的子控件,
        得到所有子控件的frame,
        进而计算cell的高度.
*/
StatusCell *cell;
//设置cell的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    if (cell == nil) {
        cell = [tableView dequeueReusableCellWithIdentifier:ID];
    }
    cell.statu = self.statusData[indexPath.row];
    return cell.cellHeight;
}

也可以看看

强制刷新-解读

上一篇下一篇

猜你喜欢

热点阅读