iOS Autolayout:2个可变大小的盒子和1个固定大小的盒子的问题

时间:2014-10-02 12:54:50

标签: ios xcode interface-builder autolayout

我现在一直在抨击这个问题几个小时,并认为是时候问别人了。

我有2个视图必须大小相同,在这两个视图中有2个框(下图中的绿色和蓝色),它们是可变大小的,还有一个固定大小的框(粉红色)

以下是示例图片:

Scenario 1

绿色和粉红色框设置在顶部,蓝色框浮在它们下面。蓝框不应该低于其他两个框中最低的15pt。这意味着如果绿色框变小(如下图所示),则蓝色框应与粉红色框保持15pt。

Scenario 2

最后,由于单元格是固定高度,那么如果蓝色框变小,那么它应该留在其他框中,但是在其自身下方留出空间以填充视图的其余部分(因为它必须与旁边的视图),我试图在这里描绘:

Scenario 3

这里的关键点是我们正在研究两者的较小观点。 (绿色和蓝色框都是带有文本的标签,必须位于框的顶部。)

我提出的最佳解决方案是添加:

  • green.bottom> = 15 blue.top
  • pink.bottom> = 15 blue.top
  • blue.bottom> = 15 superview.bottom

但我之间存在“不平等约束模糊”,因为不平等不够“好”。

1 个答案:

答案 0 :(得分:2)

您需要在蓝色视图与绿色和粉红色视图之间添加两个约束。应该是,

green.bottom == 15 blue.top priority 900

pink.bottom == 15 blue.top priority 900

您的> =约束的默认优先级为1000,这意味着它们是必需的。这将确保两个视图都不会比蓝点更接近15点。添加具有较低优先级的这些新的相等约束意味着系统将尝试满足它们,但它不必如此。这将导致系统满足这两个相同的约束条件,而不会违反> =约束。

我不确定您需要对视图底部的约束(从蓝色视图),因为我不确定您希望它的大小。