gpt4 book ai didi

iphone - 单个约束的自动布局约束错误

转载 作者:行者123 更新时间:2023-12-03 19:43:43 25 4
gpt4 key购买 nike

我有一个带有一堆标签和按钮的场景。当您点击按钮时, View 会从底部向上滑动,其中包含控件,可以说是一种键盘。它“看起来”像这样:

 -----------------------------
| |
| [Button 1] [ Slider 1 ] |
| |
| [Button 2] [ Slider 2 ] |
| |
-----------------------------

这个“键盘”是在 View 加载时一开始创建的,并且动画完成将其高度从 0 切换到其固有内容大小。这个场景只支持横向模式,当设备旋转 180 度时,我花了很长时间才将“键盘”保持在 View 上。

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

  1. 设备旋转 180 度。
  2. 调用“键盘”。

此问题如下:

Unable to simultaneously satisfy constraints...
.
.
.
.
(
"<NSLayoutConstraint:0x718c6c0 UIButton:0x717e0d0.centerY == UISlider:0x717d9d0.centerY>",
"<NSLayoutConstraint:0x7190a00 UIButton:0x717e0d0.centerY == UISlider:0x717d9d0.centerY>"
)

错误日志给了我两次这个错误,每组按钮 slider 一次。

我认为奇怪的是,冲突的约束是完全相同的。我以为我犯了一些复制粘贴错误,并添加了相同的约束两次,但事实并非如此。

我猜测这与旋转时调用 updateViewConstraints 以及执行动画时调用有关,但我不明白为什么只有这些约束受到影响,因为这个“键盘” View 中还有更多约束。

总而言之,这个自动布局比苹果声称的要困难得多。我认为,当然。

有什么想法吗?

编辑:约束主要使用视觉语言格式在代码中设置。我相信,“键盘”内的控件的约束被添加到“键盘” View 中,这是正常的事情。

为了尝试一下,我更改了有问题的约束,并将它们添加到 self.view (“键盘” super View )中,而不是将它们添加到“键盘” subview 中。突然间,不再显示任何错误。

尽管如此,我真的很想就此事进行一些讨论,因为我仍然不知道出了什么问题,而且我只是运气好。我真的很想了解它。

最佳答案

冲突的约束完全相同,这实际上就是错误。使用自动布局,您不能有两次约束。这将生成您在上面看到的错误。

当然,您已经添加了两次约束。您可以从内存地址中看到这一点。您有两个不同的 NSLayoutConstraint 实例:0x718c6c00x7190a00。然而,两者所指的实例都是相同的。也就是说,您的 UIButton 实例 0x717e0d0 的垂直中心 centerY 应位于 UISlider 的中间 0x717d9d0

可能您的 updateConstraints 方法已被调用,并且您在再次添加约束之前尚未检查约束是否已存在。

关于iphone - 单个约束的自动布局约束错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14675852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com