我有一堆标签和按钮的场景。当您点击一个按钮时,视图会从底部向上滑动,其中包含控件,可以说是一种键盘。它“看起来”是这样的:
-----------------------------
| |
| [Button 1] [ Slider 1 ] |
| |
| [Button 2] [ Slider 2 ] |
| |
-----------------------------
这个“键盘”是在视图加载和动画完成将其高度从 0 切换到其固有内容大小时在最开始时创建的。这个场景只支持横向模式,当设备旋转 180 度时,我花了很长时间才将“键盘”保持在视图上。
我看到的问题会出现以下两种情况之一:
- 设备旋转 180 度。
- 调用“键盘”。
这个问题如下:
Unable to simultaneously satisfy constraints...
.
.
.
.
(
"<NSLayoutConstraint:0x718c6c0 UIButton:0x717e0d0.centerY == UISlider:0x717d9d0.centerY>",
"<NSLayoutConstraint:0x7190a00 UIButton:0x717e0d0.centerY == UISlider:0x717d9d0.centerY>"
)
错误日志给了我两次这个错误,每组按钮滑块一次。
我认为奇怪的是冲突的约束完全相同。我以为我犯了一些复制粘贴错误并两次添加了相同的约束,但事实并非如此。
我猜这与旋转时调用 updateViewConstraints 以及我执行动画时有关,但我不明白为什么只有这些约束受到影响,因为在这个“键盘”视图中还有一些约束。
总而言之,这个自动布局比苹果声称的要困难得多。在我看来,当然。
有任何想法吗?
编辑:约束全部设置在代码中,主要使用视觉语言格式。我相信,“键盘”内控件的约束被添加到“键盘”视图中,这是正常的做法。
只是为了尝试一下,我更改了有问题的约束,而不是将它们添加到“键盘”子视图中,而是将它们添加到 self.view(“键盘”超级视图)中。突然之间,不再显示错误。
尽管如此,我真的很想就此事进行一些讨论,因为我仍然不知道出了什么问题,而且我只是碰巧碰巧了。我真的很想理解它。