【问题标题】:How can you align labels in different table view cells?如何在不同的表格视图单元格中对齐标签?
【发布时间】:2017-05-08 22:48:36
【问题描述】:

我有一个静态表格视图,如下所示:

如何不使用在它们和视图边距之间使用约束来对齐两个灰色标签的前缘(即选择一个类别和“这些是 cmets”)?

由于它们位于不同的表格视图单元格中,因此无法在情节提要中同时选择它们以对它们应用前沿约束。

(如果标签的开始取决于前一个标签的后沿,则硬编码值可能无法缩放到不同的设备大小。例如,如果“选择类别”的前沿应该是固定大小从“Category”的后沿开始,那么它的绝对位置可能会根据“Category”的字体大小等而变化。“这些是 cmets”的前沿应该与“Select a category”的前沿对齐,因此不能使用硬编码值。)

【问题讨论】:

  • 你能解决你的问题吗?看看我的回答,让我知道它是否有帮助或是否需要澄清。谢谢!

标签: ios xcode


【解决方案1】:

您需要为 选择一个类别这些是 cmets 提供具有相同值的 leading edge to container margin space。在下面的示例中,我都给出了 60 的值。

如果您想同时更改这两个值,您可以返回故事板并更改 60 的值两次(每个约束一次)。但是,更简单的方法是将约束连接到 IBOutlets 并将常量值存储在 CGFloat 中,如下所示:

@IBOutlet weak var leadingSpaceConstraint1: NSLayoutConstraint!
@IBOutlet weak var leadingSpaceConstraint1: NSLayoutConstraint!
let spaceConstraintConstant: CGFloat = 60

然后在您的 viewDidLoad() 中,您将拥有:

leadingSpaceConstraint1.constant = spaceConstraintConstant
leadingSpaceConstraint2.constant = spaceConstraintConstant

现在您只需更改spaceConstraintConstant 的值即可更改所有单元格的约束空间。

2017-05-16 更新

您在问题中编辑并指定要“在文本字段和视图边距之间不使用约束”来完成此操作。

由于您的内容是静态的,您可以采用这种方法:

  1. 在“类别”和“选择类别”之间设置距离约束。为此制作一个 IBOutlet;称之为约束A。
  2. 将“这些是 cmets”的前导边距限制设置为任何值(设置值将在一秒钟内更改)。为此约束设置一个 IBOutlet;称之为约束B。
  3. 在 viewDidLoad() 中设置约束 B 的常量值等于约束 A 加上“类别”UILabel 的长度。

【讨论】:

  • 谢谢,但您的答案是在标签的边距和前缘之间使用硬编码值。如果标签的开始取决于前一个标签的后沿,则硬编码值可能无法缩放到不同的设备大小。例如,如果“选择一个类别”的前缘与“类别”的后缘的大小应该是固定的,那么它的绝对位置可能会根据“类别”的字体大小等而有所不同。 “这些是 cmets”的前沿应该与“选择一个类别”的前沿对齐,因此不能使用硬编码值。
  • 哦,好的。我认为您的原始问题中没有指定,但我看到您编辑了问题。由于您的内容是静态的,那么这种方法怎么样:1)在“类别”和“选择类别”之间设置距离约束。为此制作一个 IBOutlet;称之为约束A。 2) 将“这些是 cmets”的前导边距设置为任何值(设置值将在一秒钟内更改)。为此约束设置一个 IBOutlet;称之为约束B。 3) 在 vi​​ewDidLoad() 中设置 constraintB 的常量值等于 constraintA 加上 "category" uilabel 的长度。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多