【问题标题】:Changing the background color of a UILabel within a UITableViewCell在 UITableViewCell 中更改 UILabel 的背景颜色
【发布时间】:2010-09-18 08:52:13
【问题描述】:

一个 UITableViewCell 是“预先构建的”,它带有一个 UILabel 作为它的一个,并且在你初始化它之后唯一的子视图。我真的想更改所述标签的背景颜色,但无论我做什么,颜色都不会改变。有问题的代码:

UILabel* label = (UILabel*)[cell.contentView.subviews objectAtIndex:0];
label.textColor = [UIColor whiteColor];
label.backgroundColor = [UIColor darkGrayColor];
label.opaque = YES;

【问题讨论】:

    标签: ios objective-c cocoa-touch


    【解决方案1】:

    您的代码 sn-p 对我来说可以正常工作,但我相信必须在将单元格添加到表格并显示之后才能完成。如果从initWithFrame:reuseIdentifier: 调用,你会得到一个异常,因为UILabel 子视图 尚未创建。

    可能最好的解决方案是添加您自己的UILabel,按照您的标准进行配置,而不是依赖这个(非常摇摇晃晃的)路径到内置路径。

    【讨论】:

    • 好吧,我首先问的原因是因为我想依靠摇摇晃晃的路径,即:我不想创建自己的子视图(是的,我就是那个懒惰的)。你说我的代码对你有用,因为它改变了背景颜色?您能否更具体地说明它是如何工作的?
    • 我也很懒,但这很危险 ;-) 我在调用您的代码的单元格的 init 方法中添加了一个延迟调用。它改变了背景颜色(当然还有文字颜色)。
    【解决方案2】:

    这不起作用,因为 UITableViewCell 在 layoutSubviews 方法中设置了它的标签 backgroundColors。

    如果要更改内置 textLabel 或 detailTextLabel 的颜色,请继承 UITableViewCell 并覆盖 layoutSubviews。调用超级实现,然后将 backgroundColor 属性更改为您想要的。

    - (void) layoutSubviews
    {   
         [super layoutSubviews];
    
         self.textLabel.backgroundColor = [UIColor redColor];
    }
    

    【讨论】:

      【解决方案3】:

      在分配单元格时将自己的标签添加到 contentView 中,而不是依赖于内置的提取。然后你就可以控制所有的值了:

      UILabel* label = [[[UILabel alloc] init] autorelease];
      label.textColor = [UIColor whiteColor];
      label.backgroundColor = [UIColor darkGrayColor];
      label.opaque = YES;
      [cell.contentView addSubview:label];
      

      【讨论】:

      • 这似乎根本不起作用,至少在 tableView:cellForRowAtIndexPath: 中不起作用:我试图让事情正常工作。有什么提示吗?
      【解决方案4】:
      for (UIView *views in views.subviews)
      {
          UILabel* temp = (UILabel*)[views.subviews objectAtIndex:0];
          temp.textColor = [UIColor whiteColor];        
          temp.shadowColor = [UIColor blackColor];
          temp.shadowOffset = CGSizeMake(0.0f, -1.0f);
      } 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多