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

时间:2010-08-08 22:09:55

标签: iphone uitableview uilabel

我正在加载自定义nib文件来自定义UITableView的单元格。自定义笔尖有一个UILabel,可以通过标记从主视图中引用。我想知道当单元格选择为不同颜色时是否可以更改UILabel的阴影颜色,因此它看起来与截图不同。

screenshot

4 个答案:

答案 0 :(得分:16)

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

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

    nameLabel.shadowColor = newShadow;

    [super setHighlighted:highlighted animated:animate];
}

答案 1 :(得分:11)

您可以在代理中的-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 :(得分:2)

我有同样的问题,以上解决方案都没有对我有用 - 我不想继承UITableViewCell并且还有一些以编程方式完成的一些棘手的选择/突出显示的状态更改上面的解决方案。

MySolution:

我最终做的是在主要UILabel下使用第二个UILabel作为影子。对于'shadow'UILabel,您可以将'突出显示的颜色'设置为'清除颜色'。

显然,每次更新主标签时都必须更新阴影标签。在许多情况下,付出的代价不是很高。

希望有所帮助!

答案 3 :(得分:0)

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

如果您确实需要阴影,则覆盖-setHighlighted方法是最佳解决方案。它将代码与单元格保持在一起,我认为这比从表格视图中处理它更好。