编辑:我已经设法将其归咎于罪魁祸首:UIModalPresentationPageSheet(与 UIModalPresentationFormSheet 相同)
如果我删除它并制作一个简单的 UIModal,自动布局不会中断......但是,我仍然没有设法找到解决方法,但我猜 UIModalPresentationPageSheet 必须重新计算表格的宽度并打破约束。
我尝试在 ViewDidLoad 和 ViewDidAppear 之后更新约束...但无济于事。
我一直在试图找出为什么我的自动布局会中断。 我最初的布局比较复杂,但我将其分解为最简单的表达,但它仍然失败。
这是我对单元格的初始设置:
以下是标签的约束:
以下是 UITextView 的约束:
最后这是一个荒谬的结果……UILabel 消失了……或者看起来是这样,因为如果我记录它是 CGSize……我得到荒谬的高度和宽度。
有什么想法吗?
最佳答案
UI 中的 UITextView 的宽度设置为 722,如果 iPad 尺寸类中的标签缺少约束,该宽度将生效。
您是否有可能使用不反射(reflect)标签约束的常规宽度常规高度的尺寸等级?我会检查您是否为这个尺寸等级安装了所有约束,因为在我看来标签不存在于 iPad 尺寸等级中。
在不同设备的预览窗口中查看它的外观。这应该显示哪些布局有效,哪些无效。
编辑:从讨论中找到的解决方案
有趣的是,我想知道在页面或表单的模态呈现中大小类是否不同?当您使用弹出窗口时,宽度大小类会更改为紧凑。尝试使用模态 FullScreen 看看是否是问题所在?还要查看调试器中的 [self.traitCollection] 以查看它使用的大小类。
我发现对于大多数开发,最好使用大小类 Any/Any,然后添加异常(exception)。
关于ios - 在 UIModalPresentationPageSheet 中呈现 UITableViewController 时自动布局中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28962175/