【问题标题】:Table Cell background and text color cannot be set accurately.无法准确设置表格单元格背景和文本颜色。
【发布时间】:2012-01-10 15:40:05
【问题描述】:

我需要将表格单元格的背景设置为特定颜色。 (分别为#222222 或 RGB(32,32,32))

IB中表格视图的背景设置正确。正确的灰色出现在表格标题的背面和部分标题等中。 但我与细胞斗争。

要自定义单元格的外观,我将 UITableCell 子类化并实现 layoutSubviews 方法。

这很好用:

- (void)layoutSubviews {

    [super layoutSubviews];

    self.selectionStyle                 = UITableViewCellSelectionStyleGray;

    self.backgroundColor                = [UIColor darkGrayColor];
    self.contentView.backgroundColor    = [UIColor darkGrayColor];
    self.textLabel.textColor            = [UIColor whiteColor];
    self.detailTextLabel.textColor      = [UIColor grayColor];
}

但是,grayColor 和 darkGrayColor 根本不匹配我需要的颜色。

我自然尝试了 UIColor 的 colorWithRed:green:blue:alpha 方法。

- (void)layoutSubviews {

    [super layoutSubviews];

    self.selectionStyle                 = UITableViewCellSelectionStyleGray;

    self.backgroundColor                = [UIColor colorWithRed:(32/256) green:(32/256) blue:(32/256) alpha:1];
    self.contentView.backgroundColor    = [UIColor colorWithRed:(32/256) green:(32/256) blue:(32/256) alpha:1];
    self.textLabel.textColor            = [UIColor whiteColor];
    self.detailTextLabel.textColor      = [UIColor colorWithRed:(32/256) green:(32/256) blue:(32/256) alpha:1];
}

那会导致 detailTextLable 的黑色背景和黑色。 (当然,为背景和文本标签使用相同的颜色是没有意义的。我只是想弄清楚 colorWithRed:green:blue:alpha 做什么和不做什么。)

使用普通风格的桌子我很好。那些单元格根本没有背景颜色。当我只是省略设置 backgroundColor 和 contentView 的背景颜色属性时,单元格的背景显示为在 IB 中定义为表的背景颜色。 但是对于分组表,标准背景是一些浅灰色,我想将其更改为与我客户的风格指南相匹配的更体面的颜色。

我做错了什么?我是否正确使用 colorWithRed:green:blue:alpha ?

非常感谢任何建议。

【问题讨论】:

    标签: iphone objective-c ios


    【解决方案1】:

    感谢您指出错误。

    但是,这并不能完全回答与普通表格样式和分组表格样式之间的区别有关的问题。

    以防万一有人觉得这个问题很有趣:

    1. 分组样式带有背景视图。我将其设置为零。
    2. gropued 样式始终将单元格背景颜色设置为某个值。因此省略 self.backgroundColor=... 语句是不够的。

    终于

    self.backgroundColor            = [UIColor clearColor];
    

    成功了。它只是没有远程连接到我也犯的objective-c错误。

    【讨论】:

      【解决方案2】:

      32/256 = 032/256.0 = 0.125

      【讨论】:

      • 有时候就这么简单:) 谢谢。但是,rckoenes 更快。
      【解决方案3】:

      我会尝试其他计算颜色浮动的方法:

      [UIColor colorWithRed:(32.0f/255.0f) green:(32.0f/255.0f) blue:(32.0f/255.0f) alpha:1.0f];
      

      因为 0 也包括你有 0 到 255 个值而不是 1 到 256 个值。

      如果您希望单元格透明,请使用[UIColor clearColor]

      【讨论】:

      • ARM processors中的除法是软件完成的,不提供硬件。所以最好将数量乘以0.003921而不是除以255来提高效率。
      • 感谢 iShery 的提示。除此之外也可以解决问题。 :)
      • 我希望编译器只计算这样的静态数字的答案。
      猜你喜欢
      • 2015-01-01
      • 1970-01-01
      • 2012-06-06
      • 2019-10-21
      • 2018-12-04
      • 1970-01-01
      • 2010-11-21
      • 2017-03-26
      • 2015-06-02
      相关资源
      最近更新 更多