选中时,动态加载的UITableViewCell ImageView会更改颜色

时间:2013-12-05 18:13:58

标签: ios uitableview ios7 sdwebimage

我希望这是一个简单的问题,我只是遗漏了一些明显的东西。我的表格单元格 ScheduleCell 是动态创建的。所有内容都来自解析的JSON有效负载。单元格的图像 - cellImage 也是动态的,并使用SDWebImage框架实现。当选择一个单元格时,单元格会变为灰色,但图像却没有。我想这样做,当选择单元格时,图像也会改变颜色。如果我能改变图像的色调那会很棒?是否有捷径可寻?

我的细胞非常直接地创建:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{    
    ScheduleCell *cell = (ScheduleCell *)[tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
    if (cell == nil)
    {
        cell = [[ScheduleCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
    }

    NSDictionary *event = self.schedule[self.sections[[indexPath section]]][indexPath.row];
    cell.dayLabel.text          = [event objectForKey:@"start_date"];
    cell.nameLabel.text         = [event objectForKey:@"name"];
    cell.dayOfWeekLabel.text    = [event objectForKey:@"start_day"];
    cell.monthLabel.text        = [event objectForKey:@"monthShort"];

    [cell.cellImage setFrame:CGRectMake(91, 24, 230, 85)];
    [cell.cellImage setImageWithURL:[NSURL URLWithString:[[event objectForKey:@"pic_cover"] objectForKey:@"source"]] placeholderImage:[UIImage imageNamed:@"placeholder230x85.png"] usingActivityIndicatorStyle:(UIActivityIndicatorViewStyle)UIActivityIndicatorViewStyleGray];
    cell.backgroundColor = [UIColor colorWithRed:0.85 green:0.85 blue:0.85 alpha:1.0];

    return cell;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 110;
}

这是我的细胞在被选中时的样子:

enter image description here

以下是我的IB设置的屏幕截图:

enter image description here

2 个答案:

答案 0 :(得分:1)

执行此操作的一种简单方法是将UIView添加为图像视图的子视图,并为其提供小于1的alpha值,以便显示图像。您可以将要添加的任何颜色添加到图像中。

答案 1 :(得分:0)

最简单的答案是渲染具有透明背景的PNG并从您的API中获取。

如果这不起作用,你可以使用Quartz 2D image masks使白色部分透明,但这也会使杰克逊维尔美洲虎的内部透明(如果它是完全相同的白色;我没有选中)。

这是Stack Overflow question and answer,应该有助于此。 (尝试并查看它是否适用于您的应用程序并不难。)