我有一个UITableView
,其中每个单元格包含UIImageView
个产品(异步加载但始终带有纯白色背景)和UILabel
。当我点击它时,所选单元格会突出显示但不会UIImageView
。我知道有这个属性
imageView.highlightedImage = [UIImage imagedNamed:@"product_highlighted"];
但很明显,这只适用于静态图像,而在这种情况下,我使用动态图像,所以我不会有图像,直到它被加载。
如何解决此问题?
答案 0 :(得分:2)
您应该创建自定义UITableViewCell
子类并覆盖setHighlighted:animated
:
- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
{
[super setHighlighted:highlighted animated:animated];
[imageView setHighlighted:highlighted];
}
来自Apple docs:
请注意,要使突出显示正常工作,您必须获取单元格 使用textLabel(和detailTextLabel属性)标记(或标签) 并设置标签的highlightTextColor属性;对于图像,得到 使用imageView属性设置单元格的图像并设置UIImageView object的highlightImage属性。
答案 1 :(得分:0)
这是我提出的解决方案。如果图像的背景是白色,则它有效。我已添加到 TableviewDidSelectRow 方法
- (UIImage*) addLayerTo:(UIImage*)source withAlpha:(double)alpha
{
CGSize size = [source size];
UIGraphicsBeginImageContext(size);
CGRect rect = CGRectMake(0, 0, size.width, size.height);
[source drawInRect:rect blendMode:kCGBlendModeNormal alpha:1.0];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, alpha);
CGContextFillRect(context, rect);
UIImage *testImg = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return testImg;
}
它基本上添加了一个具有特定Alpha透明度的黑色图层,它将与单元格选定的背景无缝合并。我从this article
中获取灵感