如果太高,使用自动布局从水平中心调整垂直位置
Using Autolayout adjust vertical position from horizontal center if too high
在图表中,我需要将右视图与左视图居中对齐。如果右视图比左视图大,我需要将其顶部对齐。我可以用约束(故事板)来做到这一点,还是我需要在代码中做一些事情来在确定大小后调整右视图的位置(通过约束)?右视图有多个可以增长的 UILabel,所以我直到运行时才知道大小。容器实际上是一个UITableViewCell。
居中很容易。右视图调整大小,单元格调整到该大小。问题是如果它太大,需要顶部对齐。
在故事板中,将右视图与左视图顶部对齐。
给出值
topAlignCons.value= +(leftView.height/2) //in storyboard
以便它与左视图的中心对齐
在视图控制器中为顶部对齐约束创建出口。
当右视图大于左视图时,将出口约束值更改为0。
topAlignConstraint.constant=@0;
现在它将与左视图顶部对齐,没有负值。
你想要这个:
你可以用两个约束来做到这一点。
您希望绿色视图的顶部大于或等于粉红色视图的顶部,总是。也就是说,您需要 green.top ≥ pink.top
.
此外,您希望绿色视图的 Y 中心等于粉红色视图的 Y 中心,如果可能。也就是说,您更喜欢 green.centerY == pink.centerY
,如果它不违反其他约束。
这是故事板编辑器中的第一个约束:
这是第二个约束:
请注意,我已将第二个约束的优先级降低到 800,这意味着它不是必需的,但它是强烈推荐的。
您无需编写任何代码即可完成这项工作。我确实在我的演示中编写了代码来连接滑块和标签,但我不必从代码中修改这两个约束。
在图表中,我需要将右视图与左视图居中对齐。如果右视图比左视图大,我需要将其顶部对齐。我可以用约束(故事板)来做到这一点,还是我需要在代码中做一些事情来在确定大小后调整右视图的位置(通过约束)?右视图有多个可以增长的 UILabel,所以我直到运行时才知道大小。容器实际上是一个UITableViewCell。
居中很容易。右视图调整大小,单元格调整到该大小。问题是如果它太大,需要顶部对齐。
在故事板中,将右视图与左视图顶部对齐。
给出值
topAlignCons.value= +(leftView.height/2) //in storyboard
以便它与左视图的中心对齐
在视图控制器中为顶部对齐约束创建出口。
当右视图大于左视图时,将出口约束值更改为0。
topAlignConstraint.constant=@0;
现在它将与左视图顶部对齐,没有负值。
你想要这个:
你可以用两个约束来做到这一点。
您希望绿色视图的顶部大于或等于粉红色视图的顶部,总是。也就是说,您需要 green.top ≥ pink.top
.
此外,您希望绿色视图的 Y 中心等于粉红色视图的 Y 中心,如果可能。也就是说,您更喜欢 green.centerY == pink.centerY
,如果它不违反其他约束。
这是故事板编辑器中的第一个约束:
这是第二个约束:
请注意,我已将第二个约束的优先级降低到 800,这意味着它不是必需的,但它是强烈推荐的。
您无需编写任何代码即可完成这项工作。我确实在我的演示中编写了代码来连接滑块和标签,但我不必从代码中修改这两个约束。