iOS Autolayout:将UILabel的左边缘与容器中的水平中心对齐?

时间:2013-11-12 20:07:26

标签: ios uitableview autolayout

所以我正在尝试使用如下所示的自定义UITableViewCell:

See the second column of titles and how the left side of them are aligned with the center

我正在尝试将详细信息标签保持对齐,并将标题标签上的内容设置得更高。

所以我面临的挑战是我希望Title Cell上第二列的左边缘与整个视图的中心对齐。

有办法吗?

4 个答案:

答案 0 :(得分:6)

尝试使用几个分组视图,每列一个。将每个列视图的外边缘固定到单元格内容视图的边缘,然后向列视图添加等宽度约束。

准备好包含列视图后,可以在每个视图中布置标签。

enter image description here

enter image description here

答案 1 :(得分:2)

添加等宽度约束,向左视图添加前导空间约束,向右添加尾随空格,以及它们之间的水平间距。

enter image description here

答案 2 :(得分:1)

当然,您可以将它们放在UIView中,并且视图左边缘将等于CenterX,因此它们将在中间对齐。或者您可以将顶部标题单元格与CenterX对齐,并使每个标题的前沿与此匹配。您可以通过多种方式实现您的要求。

NSLayoutContraint *constraint = [NSLayoutConstraint constraintWithItem:label attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1.0f constant:0.0f];
[self.view addConstraint:constraint];

NSArray *constraints [NSLayoutConstraint
                      constraintsWithVisualFormat:@"V:|[label1]-(5)-[label2]-(5)-[label3]|"
                      options:NSLayoutFormatAlignAllLeading
                      metrics:nil
                      views:@{ @"label1" : label1, @"label2" : label2, @"label3" : label3 }];
[self.view addConstraints:constraints];

上面只是如果您希望如何在代码中执行此操作的示例,self.view是一个视图,但如果您想要UITableViewCell的内容视图,您可以将其切换为。

答案 3 :(得分:0)

我无法得到上述建议,所以我采取了另一种方式。

  • InnerView1 50%宽度的ContentView&固定在左边
  • InnerView2 50%宽度的ContentView&

简单。