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度时,我花了很长时间才将“键盘”保持在视图上

我看到的问题出现在以下两种情况之一:

  • 设备旋转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
    方法已被调用,在再次添加之前,您尚未检查约束是否已存在。

    我不知道这是否对您有帮助,但我只是用于设置应用程序中按钮和标签的约束,因此,答案应该是寻找解决方案的终点(而不是参考文献的另一个中途停留,随着时间的推移,这些参考文献往往会变得陈旧)。请考虑在这里添加一个独立的概要,将链接作为参考。