编辑:我设法将其归结为罪魁祸首: UIModalPresentationPageSheet (与UIModalPresentationFormSheet相同)
如果我删除它并制作一个简单的UIModal,自动布局不会中断...但是,我仍然没有设法找到解决方法,但我想UIModalPresentationPageSheet必须重新计算表的宽度并打破约束。
我在ViewDidLoad和ViewDidAppear之后尝试更新约束......但无济于事。
我一直想弄清楚为什么我的Autolayout会破坏。 我最初的布局比较复杂,但我把它分解为最简单的表达方式,它仍然会破坏。
这是我对单元格的初始设置:
以下是Label的约束:
以下是UITextView的约束:
最后这是荒谬的结果...... UILabel已经消失......或者看起来似乎是因为如果我记录它的CGSize ......我的高度和宽度都很荒谬。
有什么想法吗?
答案 0 :(得分:1)
UI中的UITextView的宽度设置为722,如果iPad尺寸类中的标签缺少约束,该宽度将生效。
您是否有可能使用不反映标准约束的常规宽度常规高度的尺寸类?我会检查你为这个尺寸类安装的所有约束,因为它看起来像iPad尺寸类中没有标签。
检查预览窗口中不同设备的外观。这应该显示哪些布局有效,哪些布局无效。
编辑:从讨论中找到解决方案
有趣的是,我想知道尺寸类在页面或表单的模态表示中是否不同?使用弹出窗口时,宽度大小类将更改为紧凑。尝试使用模态FullScreen来查看是否存在问题?另请查看调试器中的[self.traitCollection]以查看它正在使用的大小类。
我发现最好在大多数开发中使用尺寸类Any / Any,然后添加例外。
答案 1 :(得分:0)
这是因为你的标签附在textview上,textview附在标签上,它不知道任何这些组件的宽度,这就是为什么它的行为如下。
您需要设置至少一个组件的宽度约束。或者,您可以将标签贴在superview上,然后将textview附加到标签上。