美文网首页iOS 进阶
iOS-如何计算cell高度/自定义不等高cell

iOS-如何计算cell高度/自定义不等高cell

作者: IMKel | 来源:发表于2017-09-04 12:36 被阅读72次

    先把关键代码粘贴出来给大家看,总体思路是酱紫的。
    1.给模型cell添加一个辅助属性,用来保存cell高度,笔者这里辅助属性名称叫做cellHeight
    2.根据indexPath.row拿出对应的cell,如果cell的cellHeight属性值为0,那么就去计算cell的高度,然后保存到cellHeight中,再将cellHeight返回出去。
    3.如果cell的cellHeight属性值不为0,那么直接返回出去就OK了。

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
        
        FKTopicDetailModel *topicDetailModel = self.topicDetailModelArrM[indexPath.row];
        
        if (topicDetailModel.cellHeight == 0) {
            
            CGSize textSize = CGSizeMake(KEY_WINDOW.width - 2 * 16, MAXFLOAT);
            
            NSDictionary *textAttr = @{NSFontAttributeName : CHINESE_PingFangRegular(15)};
            
            CGFloat height = [topicDetailModel.topicDescription boundingRectWithSize:textSize options:NSStringDrawingUsesLineFragmentOrigin attributes:textAttr context:nil].size.height;
            
             // cellBaseHeight方法是用于获取固定高度值的。
            topicDetailModel.cellHeight = [FKTopicTvCell cellBaseHeight] + height;
        }
        
        return topicDetailModel.cellHeight;
    }
    
    注意点:

    计算文本高度时,笔者这里调用了boundingRectWithSize:options:attributes:context:方法,切记第二个枚举参数不要传kNilOptions(笔者经常传kNilOptions,偷懒嘛,哈哈),kNilOptions实际上等于0,但是这个方法的枚举0对应的值是不存在的,如果穿入kNilOptions那么字符串高度计算就会失败。

    相关文章

      网友评论

        本文标题:iOS-如何计算cell高度/自定义不等高cell

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