所以我将UITableViewCell子类化并为其提供了适当的xib文件
为了保持简单,我只能说我有3个UILabel
并排
它们之间的间距为8,并且调整大小以适应其内容,但第一个除外,它占用了单元格中的剩余空间。
第一个标签(Label1)对其他标签和超级视图都有尾随空间限制。这些约束的Installed
属性未经检查,并通过IBOutlet
s连接到我的子类
在视觉上它看起来像这样:
[Label1] - 间距 - [Label2] - 间距 - [Label3]
根据显示的数据,可以隐藏右侧2 UILabel
。如果隐藏第一个,它应该如下所示:
[Label1] - 间距 - [Label3]
隐藏标签是在tableView:cellForRowAtIndexPath:
中完成的,我在其中调用一个方法来设置xib文件中的适当约束,该约束可以通过IBOutlet
访问。这很完美。但是在旋转设备时,约束是从xib文件重新加载的,其中没有约束Installed
,但updateConstraints
- 子类上没有再次调用UITableViewCell
,搞乱了一切。
修复它的一种方法是,在tableView:cellForRowAtIndexPath:
我可以在我的layoutSubviews
- 子类中的UITableViewCell
中调用它,而不是调用方法来设置适当的约束。但我认为你不应该更新layoutSubviews
中的约束。