我希望这是一个简单的问题,我只是遗漏了一些明显的东西。我的表格单元格 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;
}
这是我的细胞在被选中时的样子:
以下是我的IB设置的屏幕截图:
答案 0 :(得分:1)
执行此操作的一种简单方法是将UIView添加为图像视图的子视图,并为其提供小于1的alpha值,以便显示图像。您可以将要添加的任何颜色添加到图像中。
答案 1 :(得分:0)
最简单的答案是渲染具有透明背景的PNG并从您的API中获取。
如果这不起作用,你可以使用Quartz 2D image masks使白色部分透明,但这也会使杰克逊维尔美洲虎的内部透明(如果它是完全相同的白色;我没有选中)。
这是Stack Overflow question and answer,应该有助于此。 (尝试并查看它是否适用于您的应用程序并不难。)