3

自从使用 iPhone SDK 4 将 XCode 升级到版本 3.2.3 后,我的代码不再工作了。

我有一个带有样式的默认单元格,UITableViewCellStyleSubtitle并且想要设置textAlignmentoftextLabeldetailTextLabelto center,但没有任何反应。以前使用的相同代码现在不再工作了。居中UITableViewCellStyleDefault对齐仍然有效。

有谁知道如何解决这个问题?事实上,我不想仅使用自定义单元格。

4

3 回答 3

4

文本不居中的原因是标签仅与文本一样宽。您可以通过设置文本标签的背景颜色来确认这一点:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    cell.textLabel.backgroundColor = [UIColor orangeColor];
}

手动设置单元格宽度似乎也没有效果。因此,您应该真正添加自己的子视图或创建自己的UITableViewCell.

文档UITableViewCellStyleSubtitle甚至说:

单元格的样式, 其顶部有一个 对齐标签,下方有一个左对齐标签,采用较小的灰色文本。iPod 应用程序使用这种样式的单元格。

于 2010-06-23T14:13:18.223 回答
1

这是在渲染后更改标签宽度的两部分解决方案,从而允许居中发生:

-- (void) updateCenteringForTextLabelInCell:(UITableViewCell*)cell {

    UILabel* label = cell.textLabel;

    label.frame = CGRectMake(label.frame.origin.x, label.frame.origin.y, cell.contentView.frame.size.width, label.frame.size.height);

}


-- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

// do your usual

// call the helper method 

[self performSelector:@selector(updateCenteringForTextLabelInCell:) withObject:cell afterDelay:0.05];

}
于 2012-12-06T16:54:40.953 回答
0

好的,Apple 开发团队终于在 2010 年 6 月 23 日回答了我的错误报告:

“请在调用 super 后尝试在 layoutSubviews 中设置文本对齐方式。”

于 2011-01-15T17:29:04.610 回答