在我的iOS 8应用中,我有一个自定义UITableViewCell
,它使用autolayout在.xib文件中定义。我已经设置了UITableView
以便它使用自定义单元格,这一切都正常。
在我的单元格的.xib文件中,我有一个" Any x Any"的设计。大小等级,有效。我还想为" Compact x Any"设计一个不同的设计。 size class,所以我将该布局添加到我的.xib。
当我在iPhone设备(真实或模拟器)上运行应用程序时,我发现该单元格的大小总是好像它使用我的"任何x任何"布局,然而单元格的内容总是布局,好像它使用我的" Compact x Any"大小等级。无论方向如何,都会发生这种情况。
在iPad设备(真实或模拟器)上,它总是使用" Any x Any"尺寸和布局的布局,我认为是正确的。
有没有其他人试过这个并让它在iPhone上工作?我并不觉得我应该做的事情应该是一个不寻常的要求。
总之,我认为布局在所有设备上都正确发生,但是自我调整单元格逻辑似乎不尊重它所在的大小等级。
答案 0 :(得分:4)
这似乎是一个已知错误,如下所述:rdar://17799811。
解决方法是在我的视图控制器的tableView.reloadData()
方法中调用viewDidAppear
。它确实有效,但有一个丑陋的重绘,你可以在重新绘制正确大小之前暂时看到被压扁的视图内容。
此外,在iPhone 6 Plus上,当您将方向从纵向更改为横向时,垂直尺寸类会从紧凑变为常规,因此在发生这种情况时我还需要重绘。我可能会抓住方向更改,但相反(我认为这是更“正确”的方法)我选择在视图控制器中覆盖较新的traitCollectionDidChange
方法。我只是在那里打电话给tableView.reloadData()
。在这种情况下,变化发生得非常顺利,我很高兴。当桌面视图首次显示让我感到烦恼时,这只是最初丑陋的重绘。
更新:我发现将我的一个垂直约束的优先级放宽到999使得重绘变得不那么难看了。单元仍然明显改变其高度,但至少内容不会改变大小。