带有用于突出显示的图像的自定义 UITableViewCell

Posted

技术标签:

【中文标题】带有用于突出显示的图像的自定义 UITableViewCell【英文标题】:custom UITableViewCell with image for highlighting 【发布时间】:2013-05-01 06:48:52 【问题描述】:

我有一个以图像为背景的自定义 UITableViewCell(从 XIB 实例化)。现在我希望在选择单元格时将另一个图像作为背景(类似于标准单元格的蓝色闪烁)。我已经尝试在(void)setSelected:(BOOL)selected animated:(BOOL)animated 甚至didSelectRowAtIndexPath 中使用setSelectedBackgroundView 设置它,但突出显示的背景不会出现。我做错了什么?

【问题讨论】:

【参考方案1】:

在您的自定义 Cell.xib 中

接下来做这个

最后这样做

【讨论】:

感谢图片解释,但您错过了将 selectionStyle 设置为 none。【参考方案2】:

你试过像下面这样的

从 TableView 数据源方法中调用下面的方法 (cellForAtIndexPath) 用于执行相同的任务

 - (void)setCellBGColorNormalAndSelectedForTableViewCell:(UITableViewCell*)cell cellForRowAtIndexPath:(NSIndexPath*)indexPath

  UIImageView *normalCellBG = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, cell.frame.size.width, cell.frame.size.height)];

[normalCellBG setImage:[UIImage imageNamed:@"box_nonselected.png"]];//Set Image for Normal
[normalCellBG setBackgroundColor:[UIColor clearColor]];
[cell setBackgroundView:normalCellBG];


UIImageView *selecetedCellBG = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, cell.frame.size.width, cell.frame.size.height)];
[selecetedCellBG setImage:[UIImage imageNamed:@"box_selected.png"]];//Set Name for selected Cell
[selecetedCellBG setBackgroundColor:[UIColor clearColor]];
[cell setSelectedBackgroundView:selecetedCellBG ];

 

【讨论】:

老兄,我也有同样的问题。您的回答效果很好,但是如果我们在cellForAtIndexPath 中写入并且图像被覆盖,则此方法会被多次调用。如何只调用一次?【参考方案3】:

您可以使用为 CustomCell 创建的 XIB 设置选定的背景视图。您只需要将UIImageView 带到XIB 上(imageview 必须与CustomCell 具有相同的高度)。现在将CustomCell 的名为“selectedBackgroundView”的插座连接到您作为选定背景视图的UIImageView。还要检查 selectionStyleCustomCell 是否不是 none 。

【讨论】:

以上是关于带有用于突出显示的图像的自定义 UITableViewCell的主要内容,如果未能解决你的问题,请参考以下文章

如何用比率突出显示选定的自定义图标

带有图像的自定义 UIButton

带有圆形图像视图的自定义圆形 UIButton

如何制作突出显示的自定义按钮[重复]

UITabBarItem 图像颜色在第一次被选中后变为蓝色

Adobe AIR - 带有图像的自定义预加载器