我有一个表视图单元子类,有三个UILabel叠在一起 - 顶部标签有numberOfLines = 0
,中间有3个,底部有1.在99%的情况下iOS 8工作完美;然而,在某些情况下,如果在顶部标签中我设置了一些文本只是在标签要包装的点上,奇怪的事情就会开始发生。
基本上,中间标签将消失,或显示其高度的0.33pts。 Autolayout跟踪显示存在一些模棱两可的限制。显然,我希望显示所有标签,并使用autolayout根据内容展开单元格。
我在所有三个标签上的垂直拥抱/压缩优先级是1000/750。
正如我所说,我不知道这是我的约束是错误的,iOS 8与7(但是有意)不同,或者iOS 8是错误的。
我将单元格preferredMaxLayoutWidth
方法中所有标签上的layoutSubViews
设置为各自的帧宽。我可以通过将preferredMaxLayoutWidth减少20个左右来“解决”这个问题 - 这会导致标签上的“换行”改变。这不是一个真正的修复,因为我可以从文本中取出一两个字符,它会再次出错,因为包装已经改变了。
在我的heightForRowAtIndexPath
我有一个离屏单元格并且执行:
prototypeCell.bounds = CGRectMake(0, 0, CGRectGetWidth(self.tableView.bounds), CGRectGetHeight(prototypeCell.bounds));
[prototypeCell layoutIfNeeded];
还有一件事:使用可调整大小的iPhone我可以将屏幕宽度设置为320pts并且事情会中断,但是当我慢慢增加屏幕宽度时,事情会再次起作用。这就是让我相信它是UILabel的包装。
我创建了一个Github项目,显示了细胞/标签的内容: