iOS为容器中心的视图底部添加约束

时间:2014-06-08 08:50:27

标签: ios xcode view constraints

我正在尝试为iOS7中的UIView添加约束,以便将视图的底部或顶部与其包含视图的中心对齐。

示例:
LabelViewContainer包含2个标签:label1和label2。
2个标签应与LabelViewContainer的中心对齐:label1的底部应高于中心3个像素,label2的顶部应低于中心5个像素。
我在xcode中看到的限制只允许我将标签的中心对齐到容器的中心,而我实际上希望标签的底部或顶部位于容器中心的上方或下方。

到目前为止,我发现的唯一解决方案是添加另一个以容器为中心的隐藏视图,其大小为0.然后对具有前导/尾随空格的标签进行约束。 /> 我希望有另一种解决方案不需要虚假视图的膨胀。

编辑:
标签视图的大小未知。

1 个答案:

答案 0 :(得分:1)

假设:

  • 两个UILabel s,高度为30,宽度为280,开始x = 20

现在......让我们看看如何解决你的问题。

第1步:

UILabel放在您想要的任何地方


第2步:

同时选择UILabel并设置这些常见约束 Common Constraints


第3步:

选择最顶层UILabel

由于你想要它比中心高3px,请注意它的高度是30 如果它位于中心,UILabel的中心将位于view的中心,所以...如果你把它抬高了一半,那么它就会出现在18px的中心位置。高度(为15px )然后它的下边缘将接触中心线。
现在,将它提高3px,你可以比中心线高3px。

因此,您需要18高于中心线 这意味着在将其与视图中心对齐时,需要指定UILabel的常量 你可以这样做:

Label1 Constraint


第4步

选择最顶层UILabel
更新帧以符合此约束。

Label1 Update frames


第5步

选择其他UILabel

由于你想要它比中心低5px,请注意它的高度是30 如果它位于中心,view的中心将位于20px的中心,所以......如果你把它降低了一半,那么它就会在-20的中心。高度(为15px )然后它的上边缘将接触中心线。
现在,将它降低5px并使其低于中心线5px。

因此,您需要UILabel低于中心线 这意味着在将其与视图中心对齐时,需要指定{{1}}的常量 你可以这样做:

Label2 Constraint


第6步

选择其他{{1}}

更新框架以符合此约束。

Label2 Update frame