代码之家  ›  专栏  ›  技术社区  ›  Iñigo Beitia

UILabel自定义单元格选定颜色的阴影

  •  9
  • Iñigo Beitia  · 技术社区  · 16 年前

    我正在加载一个自定义nib文件来自定义UITableView的单元格。自定义nib有一个UILabel,它通过标记从主视图引用。我想知道是否有可能改变的UILabel的阴影颜色时,细胞被选择为一个不同的颜色,使它看起来不像在屏幕截图。

    screenshot

    4 回复  |  直到 12 年前
        1
  •  11
  •   kennytm    16 年前

    您可以在中更改标签的阴影颜色 -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];
    }
    
        2
  •  16
  •   Jason    15 年前

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

    - (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animate
    {
        UIColor * newShadow = highlighted ? [UIColor clearColor] : [UIColor whiteColor];
    
        nameLabel.shadowColor = newShadow;
    
        [super setHighlighted:highlighted animated:animate];
    }
    
        3
  •  2
  •   Nikolay Suvandzhiev    14 年前

    我也遇到了同样的问题,上面的解决方案对我来说都不太管用——我不想子类化 UITableViewCell 并且还以编程方式进行了一些棘手的选择/突出显示状态更改,这与上面的解决方案不太兼容。

    我的解决方案:

    UILabel UILabel标签

    希望有帮助!

        4
  •  0
  •   Dave Batton    15 年前

    最简单的答案,至少在上面所示的例子中,是首先不要显示阴影。既然你无论如何都看不到白色,就把shadowColor设置为-clearColor。

    如果您确实需要阴影,那么重写-setHighlighted方法是最好的解决方案。它将代码保存在单元格中,我认为这比从表视图处理代码要好。