自动布局:在 TableViewCell 中排列两个 UILabel

Posted

技术标签:

【中文标题】自动布局:在 TableViewCell 中排列两个 UILabel【英文标题】:Auto Layout: Lining up two UILabels in a TableViewCell 【发布时间】:2015-01-06 05:06:39 【问题描述】:

我是 ios 开发的新手,似乎自动布局对我来说是最令人困惑的部分。

我有一个 UITableViewCell,它是一个动态原型。

在单元格上,在故事板场景中,我创建了:

[UILABEL] [UILABEL]

我希望两个标签彼此相邻对齐。

第一个 UILabel 是日期(月/日),第二个 UILabel 是标题。

我知道标题会太大。但是,它仍然需要放在日期标签旁边,它们之间只有很小的空间。

例如。 12/01 示例标题

我确实尝试了 Storyboard 中的所有内容 - 从尝试让 Xcode 自动“建议约束”到通过设置右、左和底部约束来创建我自己的。以及,将标题标签的内容拥抱属性配置为垂直和水平为 1000。

日期标签显示正确。但是,标题标签根本没有出现……除了侧面的一些错误的白色规格。 =(

如果我按住该行,我可以在日期标签后面和整行的背景中看到标题。

我确实在 cellForRowAtIndexPath 方法中以编程方式配置了每一行的文本,方法是这样做:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];

if (!cell) 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];


// get the label objects of the cell
UILabel *dateLabelOfCell = (UILabel *)[cell viewWithTag:0];
UILabel *titleLabelOfCell = (UILabel *)[cell viewWithTag:1];

dateLabelOfCell.text = date;
titleLabelOfCell.text = title;

任何想法我做错了什么?

更新 1:

似乎正在设置标签文本。数据只是没有显示。所以,我更多地研究了使用 viewwithtag 设置单元格标签,我发现其他人也遇到了这个问题:

UILabel with viewWithTag - (text not appearing)

但是,他们的解决方案都不起作用。为什么第一个 UILabel 出现而第二个没有出现的任何想法?如果我点击该行,我只会看到第二个 UILabel。

【问题讨论】:

【参考方案1】:

我确定了问题。

第二个 UILabel 没有出现的原因根本不是因为自动布局。

问题是因为我使用 0 和 1 作为我的标签号。因此,我更改了故事板文件中的两个标签号并更新了代码以匹配它们都出现了。

我认为使用 0 引起问题和干扰的原因是因为 tableviewcell 的默认标记号也是 0。

因此,请确保您使用的标签编号是唯一的。

【讨论】:

以上是关于自动布局:在 TableViewCell 中排列两个 UILabel的主要内容,如果未能解决你的问题,请参考以下文章

自定义 TableViewCell 中忽略自动布局

自定义 tableviewcell 和自动布局

自定义 tableviewcell 动态高度未根据约束更新(以编程方式自动布局)

iOS 7 中自定义 TableViewCell 中的自动布局问题

iOS:如何在其附件视图更改时触发 tableViewCell 的约束/自动布局刷新?

Masonry tableviewCell布局