如果太高,使用Autolayout从水平中心调整垂直位置

时间:2016-03-09 20:34:26

标签: ios autolayout constraints

在图中,我需要将右视图与左视图对齐。如果右视图大于左视图,我需要顶部对齐它。我可以使用约束(故事板)来执行此操作,还是需要在代码中执行某些操作以在确定大小后调整右视图的位置(通过约束)?右视图有多个可以增长的UILabel,因此我不知道运行时的大小。该容器实际上是一个UITableViewCell。enter image description here

中心很容易。右视图调整大小,单元格调整为该大小。如果问题太大,问题是需要排在最前面。

2 个答案:

答案 0 :(得分:1)

你想要这个:

demo

你可以用两个约束来做到这一点。

您希望绿色视图的顶部大于或等于粉红色视图的顶部,始终。也就是说,您需要green.top ≥ pink.top

此外,您希望绿色视图的Y中心等于粉红色视图的Y中心,(如果可能)。也就是说,如果它不违反其他约束,您更喜欢green.centerY == pink.centerY

这是故事板编辑器中的第一个约束:

first constraint

这是第二个约束:

second constraint

请注意,我已将第二个约束的优先级降低到800,这意味着它不是必需的,但它是首选的。

您不需要编写任何代码来完成这项工作。我在我的演示中编写代码来连接滑块和标签,但我没有必要从代码中修改这两个约束。

答案 1 :(得分:0)

  1. 在故事板中,将右视图与左视图顶部对齐。

  2. 将值设为

    topAlignCons.value= +(leftView.height/2)  //in storyboard  
    

    以便它与左视图的中心对齐

  3. 在视图控制器中为顶部对齐约束创建一个插座。

  4. 当左视图的右视图较大时,请将出口约束值更改为0。

     topAlignConstraint.constant=@0;
    

    现在它将与左侧视图顶部对齐,没有负值。