美文网首页
iOS8 使用autoLayout 处理cell上多行Lable

iOS8 使用autoLayout 处理cell上多行Lable

作者: YannChee | 来源:发表于2017-12-15 20:46 被阅读12次
由于最近项目iOS系统终于最低适配iOS8了,终于可以放心的使用使用tableView自动计算cell高度了,不必逐个去计算cell高度了

主要代码如下

        _tableView.rowHeight = UITableViewAutomaticDimension;
        _tableView.estimatedRowHeight = 100;

或者去实现估算cell高度的代理方法

     _tableView.rowHeight = UITableViewAutomaticDimension;
//
- (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
     return 500;
}

然后自定义cell,使用autoLayout设置约束

发现在iOS8设备上,多行lable被截断,在iOS10,iOS11上显示正常

iOS8运行效果

iOS8 和iOS11对比

仔细检查了了好几遍约束,都没有问题,

我甚至都把 lable的 抗拉伸 和 抗压缩优先级都设置成最大,都不好使

后来加上这句,iOS8上多行lable终于显示终于正常了, 我猜测可能是苹果早期留下的坑,后续版本悄悄给填上了吧

self.goodsTitile.preferredMaxLayoutWidth = SCREEN_WIDTH -30;

下面是官方描述:


因为文字宽度刚好是等于 SCREEN_WIDTH -30, 如果我设置 该值宽度 > 真实宽度呢?

大于真实宽度情况

则依然出现lable被截断情况:


设置 该值宽度 < 真实宽度呢?


小于真实宽度情况
小于真实宽度情况效果

发现此时,lable宽度会多出一部分

所以结论: preferredMaxLayoutWidth 的值不能随便设置,必须设置lable每行的真实宽度值

相关文章

网友评论

      本文标题:iOS8 使用autoLayout 处理cell上多行Lable

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