iOS5与iOS4的UITableViewCell背景颜色不同

时间:2011-10-28 10:15:03

标签: ios uitableview colors ios5

在iOS 5中,分组UITableViewCell使用tableCellGroupedBackgroundColor颜色而非常规whiteColor颜色。因此,自定义单元格的背景与{{{ 1}}(默认,字幕,值1,值2样式单元格)。

确保在自定义UITableViewCell和默认UITableViewCell(以及关联的UITableViewCell和其他元素)中使用相同背景颜色的最佳方法是什么 - w.r.t. iOS4和iOS5都是什么?

注意:在编辑器中,我可以看到名称为UILabel的新颜色,但没有类别/方法可用于以编程方式获取此颜色。

修改

您可以使用以下技术更改单元格上控件的背景颜色,但是如果是自定义单元格,您如何根据操作系统设置适当的背景颜色(iOS 4 vs iOS 5)?

tableCellGroupedBackgroundColor

最简单的解决方案(我当前已实施): 这只是确保我的所有细胞都具有白色背景,无论操作系统如何。不知何故,我不需要将白色应用于- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { for (UIView* view in cell.contentView.subviews) { view.backgroundColor = cell.backgroundColor; } }

cell.contentView.subviews

3 个答案:

答案 0 :(得分:3)

这是一种快速而肮脏的方法,假设我们处理的是纯色背景颜色,没有渐变或类似的东西。

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    for (UIView *subview in [cell.contentView subviews]) {
        subview.backgroundColor = cell.backgroundColor;
    }
}

在iOS 5上,它可以帮助避免难看的视线。 :)

答案 1 :(得分:0)

或者您可以将子视图(标签等)的backgroundColor设置为[UIColor clearColor]

答案 2 :(得分:0)

如果你继承UITableViewCell,你也可以尝试覆盖setBackgroundColor

- (void)setBackgroundColor:(UIColor *)backgroundColor {
    [super setBackgroundColor:backgroundColor];
    [[self myLabel] setBackgroundColor:backgroundColor];
}

似乎iOS在设置单元格的默认背景颜色时使用此方法。