preferredMaxLayoutWidth

preferredMaxLayoutWidth

我正在使用autolayout + xib构造单元格,并且单元格的高度是动态的,因此我使用systemLayoutSizeFittingSize来获取单元格的高度。

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;

我的代码是这样的:

这将打印如下日志:

因此我们发现systemLayoutSizeFittingSize返回的大小可能比我的设备屏幕(iPhone5:320点)还要宽,这怎么办? (并且我尝试添加layoutIfNeededupdateConstraintsIfNeeded,但是问题仍然存在。

我使用的是Xcode 6,而xib文件的大小没有固定。

PS:我的视图包含多行标签,我打印了此标签的preferredMaxLayoutWidth,我发现preferredMaxLayoutWidth也很大,可能是这个问题。但是如何解决?

最佳答案

是的,这是错误的preferredMaxLayoutWidth问题,可通过在自定义单元格的updateConstraints中添加此行来解决
self.contentLabel.preferredMaxLayoutWidth = CGRectGetWidth(self.contentLabel.frame);

聚苯乙烯

实际上,我发现在单元格的layoutSubview调用后,该单元格的subView可能无法获得正确的宽度,因此,如果您要基于标签的宽度设置preferredMaxLayoutWidth,则最好在layoutIfNeeded中而不是layoutSubViews中设置preferredMaxLayoutWidth。

10-05 20:05