【问题标题】:UILabel shadow from custom cell selected color来自自定义单元格选择颜色的 UILabel 阴影
【发布时间】:2010-08-08 22:09:55
【问题描述】:

我正在加载一个自定义 nib 文件来自定义 UITableView 的单元格。自定义 nib 有一个 UILabel,它通过标签从主视图中引用。我想知道当单元格被选中时是否可以将 UILabel 的阴影颜色更改为不同的颜色,使其看起来不像屏幕截图中的那样。

【问题讨论】:

    标签: iphone uitableview uilabel


    【解决方案1】:

    我更喜欢在 TableCell 代码中更改阴影颜色,以免污染委托。你可以重写这个方法来处理它:

    - (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animate
    {
        UIColor * newShadow = highlighted ? [UIColor clearColor] : [UIColor whiteColor];
    
        nameLabel.shadowColor = newShadow;
    
        [super setHighlighted:highlighted animated:animate];
    }
    

    【讨论】:

      【解决方案2】:

      您可以在委托的-tableView:willSelectRowAtIndexPath: 中更改标签的阴影颜色。例如:

      -(NSIndexPath*)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
          UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
          cell.textLabel.shadowColor = [UIColor greenColor];
          return indexPath;
      }
      -(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
          UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
          cell.textLabel.shadowColor = [UIColor redColor];
      }
      

      【讨论】:

      • 此答案不适用于突出显示的单元格状态(即,如果用户按下单元格但未释放)。不幸的是,杰森的回答是我见过的最好的处理这个案子的答案。不幸的是,它涉及子类化。您可能还需要覆盖 setSelected:
      【解决方案3】:

      我遇到了同样的问题,以上解决方案都没有对我很有效 - 我不想继承 UITableViewCell 并且还以编程方式完成了一些棘手的选定/突出显示状态更改,这与解决方案不兼容以上。

      我的解决方案:

      我最后所做的是在主要UILabel 下方使用第二个UILabel 充当阴影。对于那个“阴影”UILabel,您可以将“突出显示颜色”设置为“清除颜色”。

      显然,每次更新主标签时,您都必须更新影子标签。在很多情况下,付出的代价并不大。

      希望有帮助!

      【讨论】:

        【解决方案4】:

        至少对于上面显示的示例而言,简单的答案是首先不显示阴影。由于您无论如何都看不到白底白字,请将 shadowColor 设置为 -clearColor。

        如果你真的需要阴影,覆盖 -setHighlighted 方法是最好的解决方案。它将代码与单元格一起保存,我认为这比尝试从表格视图中处理它更好。

        【讨论】:

          猜你喜欢
          • 2012-07-10
          • 2021-03-27
          • 2017-06-25
          • 2012-05-26
          • 1970-01-01
          • 2020-12-24
          • 1970-01-01
          • 2015-07-26
          • 1970-01-01
          相关资源
          最近更新 更多