【问题标题】:Centering group of dynamically growing labels vertically using auto layout in interface builder使用界面构建器中的自动布局垂直居中动态增长的标签组
【发布时间】:2016-05-19 08:03:45
【问题描述】:

我有一个视图,它始终具有恒定的高度。在这个视图里面有三个标签,顶部标签可以长到两行,其余的固定到一行。

所有标签的前缘和后缘都固定到超级视图,但所有标签的高度都是在本质上计算的。

对于顶部标签有一行和顶部标签有两行的两种情况,我想将所有三个标签垂直居中。

我想在 Xcode 界面生成器中使用自动布局。

【问题讨论】:

    标签: ios autolayout storyboard interface-builder


    【解决方案1】:

    您只能通过在视图层次结构中添加另一个 UIView 来实现这一点。所以这就像

    UIView
      -> SubView
          -> lbl1
          -> lbl2
          -> lbl3
    

    现在来约束,应用这些

    SubView 到 UIView:- CenterX, CenterY, Leading = 0, Trailing = 0, Height >= 67;垂直压缩阻力 = 751;
    lbl1 到子视图:- 前导 = 0,尾随 = 0,顶部 = 0,底部到 Lbl2 = 2,高度 >= 21;垂直抗压 = 751;
    lbl2 到子视图:- 前导 = 0,尾随 = 0,顶部到 lbl1 = 2,底部到 lbl3 = 2,高度 = 21;
    lbl3 到子视图:- 前导 = 0,尾随 = 0,顶部到 lbl2 = 2,底部 = 0,高度 = 21;

    对于Subview,我根据每个标签高度为 21 和每个标签之间的间距为 2 计算了高度。So SubView.Height = 21*3+2+2 = 67。如果您选择不同的值,则相应地修改约束值。

    【讨论】:

    • 我缺少 lbl3 到 subview: Bottom=0 约束,因为 SubView 到 UIView: Height >=67 在界面生成器中产生不等式约束歧义错误。一旦我施加了这种约束,它就开始像魅力一样发挥作用。我没有修改任何元素的垂直抗压性,也没有对任何标签施加任何高度限制,因为高度是由自动布局系统固有地为标签计算的。谢谢。
    • @devgr 欢迎您,我很欣赏您在没有抗压性的情况下实现它的方法。我采用了我认为可行的方法,并且肯定会通过删除阻力属性来检查自己。
    猜你喜欢
    • 1970-01-01
    • 2014-07-03
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    • 2016-09-15
    • 2014-09-08
    • 2012-09-28
    • 1970-01-01
    相关资源
    最近更新 更多