我正在加载自定义nib文件来自定义UITableView的单元格。自定义笔尖有一个UILabel,可以通过标记从主视图中引用。我想知道当单元格选择为不同颜色时是否可以更改UILabel的阴影颜色,因此它看起来与截图不同。
答案 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方法是最佳解决方案。它将代码与单元格保持在一起,我认为这比从表格视图中处理它更好。