由于最近项目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 和iOS11对比

仔细检查了了好几遍约束,都没有问题,
我甚至都把 lable的 抗拉伸 和 抗压缩优先级都设置成最大,都不好使

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

下面是官方描述:
因为文字宽度刚好是等于 SCREEN_WIDTH -30, 如果我设置 该值宽度 > 真实宽度呢?

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

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


发现此时,lable宽度会多出一部分
网友评论