2016-02-19 47 views
1

enter image description here我不明白约束优先

我创建具有下列约束的矩形:

enter image description here

我虽然如果我width >=250999设置优先级来限制,那么宽度equal == 200将工作在小设备上,并与width >= 250大。

但它没有奏效。我阅读文档:

求解所需的限制后,自动布局尝试 解决的优先顺序所有可选限制从最高到最低 。如果它无法解决可选约束问题,它会尝试使 尽可能接近所需结果,然后移动到 下一个约束。

这种不平等,平等和优先权的组合给你 大量的灵活性和权力。通过组合多个 约束,您可以定义动态适应的大小为 的布局以及用户界面中元素的位置发生更改。

+1

如果你有一个约束,说你的宽度应为200,而约束是必须的,那么它将永远是200分宽。我没有看到您列出的约束条件中的任何内容,这会导致它们约束切换到> = 250约束条件。如果有空间的话,你会想添加一些像前导和尾随约束这样的东西,试图让这个盒子变得更宽一些。 –

+0

只有当两个约束冲突时,优先级才成为平局。因此,您不能只有'width> = 250'的单个约束,并且希望根据设备中视图的大小增大图像的大小。您必须添加其他约束条件,以允许自动布局将新的约束考虑在内。 – CapturedTree

回答

2

的优先级约束将为了解决两个不同的约束之间的冲突,可以应用。框架的视图将被修改,应用更多优先级的约束。因此,您应该有另一个视图或使用超级视图将优先级应用于约束。

这是一个很好的答案解释性的优先级:Link

0

iOS会根据您的说明进行操作。根据屏幕大小,约束不会自动禁用。优先级较高的约束将首先应用。

因此,当iOS需要布局您的视图时,它会查找您提供的规范。现在,根据您指定的规格,无论屏幕尺寸如何,视图的宽度应为200(最高优先级)。所以这个约束被应用,并且你得到宽度为200的视图。

你怎么能够做你想要的?

当您的应用程序在大屏幕上运行时,您应该尝试禁用“width”规范为200的约束,然后您的其他约束将起作用并给出正确的结果。

禁用/启用约束 -

Stackoverflow Link

Apple Developer Library