Iphone 具有单个约束的自动布局约束错误
我有一个有一堆标签和按钮的场景。当你点击一个按钮时,一个视图从底部向上滑动,里面有控件,可以说是一种键盘。它“看起来”是这样的:Iphone 具有单个约束的自动布局约束错误,iphone,xcode,ios6,autolayout,nslayoutconstraint,Iphone,Xcode,Ios6,Autolayout,Nslayoutconstraint,我有一个有一堆标签和按钮的场景。当你点击一个按钮时,一个视图从底部向上滑动,里面有控件,可以说是一种键盘。它“看起来”是这样的: ----------------------------- | | | [Button 1] [ Slider 1 ] | | | | [Button 2] [ Slider 2 ] | |
-----------------------------
| |
| [Button 1] [ Slider 1 ] |
| |
| [Button 2] [ Slider 2 ] |
| |
-----------------------------
这个“键盘”是在视图加载和动画完成后的一开始创建的,将其高度从0切换到其固有的内容大小。这款escene只支持横向模式,当设备旋转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(“键盘”超级视图)中,而不是添加到“键盘”子视图中。突然之间,不再显示错误
尽管如此,我真的很想讨论一下这件事,因为我仍然不知道出了什么问题,我只是运气好而已。我真的很想理解它。冲突约束完全相同的事实实际上就是错误所在。使用“自动布局”时,约束不能重复两次。这将生成您在上面看到的错误 当然,您已经添加了两次约束。您可以从内存地址中看到这一点。您有两个不同的
NSLayoutConstraint
实例,0x718c6c0
和0x7190a00
。但是,每个引用的实例都是相同的。即,您的<代码> UIButton > <代码>实例>代码> 0x717e0d0< /代码>应位于“代码< UISlider > /代码>代码> 0x717d9d0 中。
可能您的
updateConstraints
方法已被调用,在再次添加之前,您尚未检查约束是否已存在。我不知道这是否对您有帮助,但我只是用于设置应用程序中按钮和标签的约束,因此,答案应该是寻找解决方案的终点(而不是参考文献的另一个中途停留,随着时间的推移,这些参考文献往往会变得陈旧)。请考虑在这里添加一个独立的概要,将链接作为参考。