选择单元格时,UITableViewCell中的UIImageView不会突出显示

时间:2015-06-18 13:53:49

标签: ios objective-c uitableview uiimageview

我有一个UITableView,其中每个单元格包含UIImageView个产品(异步加载但始终带有纯白色背景)和UILabel。当我点击它时,所选单元格会突出显示但不会UIImageView。我知道有这个属性

imageView.highlightedImage = [UIImage imagedNamed:@"product_highlighted"];

但很明显,这只适用于静态图像,而在这种情况下,我使用动态图像,所以我不会有图像,直到它被加载。

如何解决此问题?

2 个答案:

答案 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

中获取灵感