【问题标题】:Ambiguity with two inequality constraints具有两个不等式约束的歧义
【发布时间】:2013-11-20 04:37:59
【问题描述】:

我希望底视图距离图像其上方的标签至少 20 距离。标签是多行的,因此它可以比图像视图更高或更短,具体取决于有多少文本。当我添加两个“到最近邻的距离 >= 20”的约束(如屏幕截图所示)时,Xcode 告诉我约束不明确。

我该如何解决?

【问题讨论】:

  • 您希望标签如何与图像视图对齐?如果是单行,是否应该与顶部对齐?底端?中间?随着它变得更高,您是否希望顶部对齐,直到它太高而无法与底部视图保持 20 距离,然后再向上移动?您可以设想多种场景,它们都需要不同的解决方案。你应该更明确地说明你想要什么。
  • @rdelmar 它们没有相对于彼此垂直对齐(此标签上方还有另一个标签,并且图像和顶部标签都与超级视图顶部边框对齐)。实际上,它们的顶部对齐,底部各不相同。
  • 那么,如果标签太长,你是想让底视图变短,还是往下移?另外,图像视图是否有固定高度?
  • @rdelmar 底视图被下推,图像是固定高度。

标签: ios autolayout


【解决方案1】:

如果我了解您的要求,我认为您可以这样做:

图像视图具有固定的宽度和高度,以及对左侧和顶部的约束,以及对底部视图的约束 =20优先级为 700。这很关键——这将设置该底部视图的 y 位置(其具有固定的高度和两侧的约束),但如果另一个具有更高优先级的约束使其移动,它将允许它移动得更低。具有更高优先级的约束是对标签的约束——它 >=20,优先级为 1000(标签还对图像视图的顶部、右侧和后缘有约束)。

【讨论】:

  • 这实际上是我现在所拥有的。事实证明,有两个 >=20 约束是一个红鲱鱼。如果我删除其中任何一个,仍然存在歧义。 Xcode 帮助(单击警告中的(i))告诉我,仅>= 约束不足以垂直定位元素。
  • @AlexB,我在图像视图和底部视图之间的那个是 =(优先级为 700)而不是 >=。这足以满足约束。
  • 所以看起来>=20 并不意味着“缩小到20”。您还必须在相同距离上设置=20 约束,但优先级较低。
  • @AlexB,是的,这是真的。 >=20 可能是一百万,所以这是模棱两可的。
  • 酷,看起来使图像约束=20 而不是 >=20 有效。在答案中澄清这一点,我会接受(也不确定 30 是从哪里来的,你的意思是 20 吗?)
猜你喜欢
  • 2014-04-11
  • 2017-10-12
  • 2014-10-08
  • 2015-08-10
  • 2019-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-08
相关资源
最近更新 更多