UITableViewCell实现自动约束布局出现的警告

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wm9028/article/details/81233968

我的项目出现了这样的警告:

<NSLayoutConstraint:0x171695e50 'UIView-Encapsulated-Layout-Height' \U00c2\U220f\U00c6\U00c2\U00c6\U2202\U00c2\U220f\U00e0\U00c2\U00c7\U00d6.ReceiveOrderTableViewCell:0x14e228200'MobileCountCell'.height == 44   (active)>

解决方案:
在tableViewcell添加一下代码

        self.bounds = CGRect(x: 0, y: 0, width: 99999, height: 99999);
        self.contentView.bounds = CGRect(x: 0, y: 0, width: 99999.0, height: 99999.0);

原理:引用smileyborg的回答
接下来,您将注意到列表中的底部5个约束都转换为您专门添加并打算保留的约束。
所以很容易磨练第一个,正如你所看到的其他名称(UIView-Encapsulated-Layout-Height)它已经被UIKit内部添加。
这种约束有什么作用?
基于它的VFL描述,它将表格视图单元格的contentView的高度精确地固定为44磅,这恰好是首次创建时单元格的默认初始高度。
它以前不是问题但是现在你的更改有问题的原因是因为你在视图之间添加了足够的额外内容和间距,因此所需的绝对最小高度超过了44磅…并且当你
你可以看到,你得到一个约束异常,因为cell / contentView开始时非常小(44 pt),直到它实际上为后面的内容布置了正确的大小。
它将表格视图单元格的contentView的高度精确地固定为44磅,这恰好是首次创建时单元格的默认初始高度。
它以前不是问题但是现在你的更改有问题的原因是因为你在视图之间添加了足够的额外内容和间距,因此所需的绝对最小高度超过了44磅…并且当你
你可以看到,你得到一个约束异常,因为cell / contentView开始时非常小(44 pt),直到它实际上为后面的内容布置了正确的大小。
所以简短而简单的是你所看到的与你的约束或添加没有任何关系。
在以前的iOS版本中,将contentView的大小设置为非常大的内容会解决此问题,这是取消注释此行的建议:
self.contentView.bounds = CGRectMake(0.0f,0.0f,99999.0f,99999.0f);
它看起来像iOS 8.0或8.1,Apple略微改变了表视图单元内部的工作方式,而整个问题的正确解决方法可能是设置单元格的大小(而不是contentView的),因为现在显然存在内部约束
修复contentView的大小(例如,如果我们手动设置contentView的大小,它没有任何影响,因为单元格 - 它的超级视图 - 仍然是44磅高)。
所以,尝试一下:
self.bounds = CGRectMake(0.0f,0.0f,99999.0f,99999.0f);

注:uitableview 和uitableViewcell 自动计算高度 ios8.0以上

        //自动计算高度
        listTableView?.estimatedRowHeight = 40;//平均cell的高度
        listTableView?.rowHeight = UITableViewAutomaticDimension;//自动计算cell的高度

//        cell?.setNeedsLayout();
//        cell?.layoutIfNeeded();

猜你喜欢

转载自blog.csdn.net/wm9028/article/details/81233968