【问题标题】:How can I horizontally center two side-by-side UILabels?如何将两个并排的 UILabel 水平居中?
【发布时间】:2015-02-01 11:39:13
【问题描述】:

我有一系列要水平居中的标签(即沿 X 轴),如下所示:

thing1: value1
thing2: value2
etc.

自动布局似乎不允许这样做。即使我将两者粘在一起并使用准则将其居中,中心约束也仅适用于该对中的第一个标签。

各种“事物”会有不同的长度,我希望冒号对齐(右对齐),左侧的值对齐(左对齐)。

有什么办法吗?

【问题讨论】:

  • 我会将每个标签分成两部分:冒号左侧的第一个标签(右对齐)和值的第二个标签(左对齐)。然后在自动布局中,只需对齐事物标签的后缘和值标签的前缘
  • 是的,这部分很简单,但是如何让这对标签(thing1 和 value1)在父视图中水平居中?
  • 如果您要求行项目之间的所有冒号对齐,并且每个项目在其超级视图中水平居中,那么这两件事不可能同时进行。
  • 您能否更新您的问题,显示您想要不同长度的标签?当然自动布局可以做到这一点......

标签: ios objective-c xcode autolayout


【解决方案1】:

这在代码中很容易做到。第一个标签的 x 偏移量应该是父视图的宽度与两个标签的宽度之和之间的差值的一半。例如:

CGFloat xOffset = ((parentView.frame.size.width - 
                   (view1.frame.size.width + view2.frame.size.width)) / 2);

// now position the first label using this offset
view1.frame = CGRectMake(xOffset, 
                         view1.frame.origin.y, 
                         view1.frame.size.width,
                         view1.frame.size.height);

// and position the second view relative to the first
view2.frame = CGRectMake(CGRectGetMaxX(view1.frame),
                         view2.frame.origin.y,
                         view2.frame.size.width,
                         view2.frame.size.height);

【讨论】:

    猜你喜欢
    • 2014-11-13
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 2013-11-12
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    相关资源
    最近更新 更多