使用自动布局在 UITableViewCell 中将 UILabel 居中

Posted

技术标签:

【中文标题】使用自动布局在 UITableViewCell 中将 UILabel 居中【英文标题】:Centering UILabel in UITableViewCell using Auto Layout 【发布时间】:2014-01-31 06:18:09 【问题描述】:

我是 Xcode 中自动布局的新手,所以我需要你的帮助。

我有一个自定义 tableView 单元格,左侧有一个 UILabel,右侧有三个,我希望它们像这样居中:

(虚线表示单元格的中心)。

所以我希望左边的标签在左侧居中,右侧三个单元格在右侧居中。

此外,我希望能够删除单元格右侧的三个标签之一,并将剩余的两个标签居中。 (在代码中)。像这样:

【问题讨论】:

【参考方案1】:

我只是把我的逻辑..在cellForRowAtIndexPath方法中使用所有标签的框架

LeftLabel.frame = CGRectMake((((cell.frame.size.width/2)-yourLabelWidth)/2, ((cell.frame.size.height-yourLabelHeight)/2, yourLabelWidth, yourLabelHeight));

CGFloat rightLblX = ((cell.frame.size.width/2) - (5*yourTotalNumberOfLabel))/2;

rightLabel_one.frame = CGRectMake(rightLblX, ((cell.frame.size.height-yourLabelHeight)/2, yourLabelWidth, yourLabelHeight);

rightLblX = rightLblX + 5;

rightLabel_two.frame = CGRectMake(rightLblX, ((cell.frame.size.height-yourLabelHeight)/2, yourLabelWidth, yourLabelHeight);

rightLblX = rightLblX + 5;

rightLabel_three.frame = CGRectMake(rightLblX, ((cell.frame.size.height-yourLabelHeight)/2, yourLabelWidth, yourLabelHeight);

【讨论】:

那不是使用自动布局。【参考方案2】:

朋友来了:

对于左标签, 1. Ctrl+从标签拖动到单元格并选择“在容器中垂直居中”。 2. Ctrl+从左侧标签拖动到单元格并选择“在容器中水平居中”。 3. 如果第 2 步放置不正确,请撤消第 2 步并选择“容器中的前导空间”。

这对于左标签来说已经足够了。

对于正确的标签, 对每个标签重复相同的步骤。这将解决您的问题。如果您还需要帮助,请告诉我.. :)

【讨论】:

是的,我需要更多帮助 :D 通过第 2 步,您将左标签放在单元格的中心,但我想在单元格的左半部分居中。通过茎 3。您指定与左边界的距离是多少,如果单元格变大,它将不会停留在左半部分的中心。 实际上自动布局没有“左半边或右半边中心”这样的功能。您必须以编程方式计算每个方向的距离。对于旋转,你也必须这样做.. :(

以上是关于使用自动布局在 UITableViewCell 中将 UILabel 居中的主要内容,如果未能解决你的问题,请参考以下文章

Swift:在 UITableViewCell 中异步加载图像 - 自动布局问题

使用自动布局在自定义 UITableViewCell 上分页 UIScrollView

使用自动布局在 UITableViewCell 中将 UILabel 居中

让 UITableViewCell 使用自动布局调整自身大小

UITableViewCell 高度根据行内容使用自动布局动态计算

UITableViewCell 的 nib 文件中的自动布局