在 UITableView 中突出显示所选单元格的边框

Posted

技术标签:

【中文标题】在 UITableView 中突出显示所选单元格的边框【英文标题】:Highlight the borders of the selected cell in UITableView 【发布时间】:2011-08-26 08:29:53 【问题描述】:

是否有可能在 Objective-c 中的UITableViewController突出显示选定单元格边框

【问题讨论】:

【参考方案1】:

您可以尝试使用setSelectedBackgroundView: 制作自定义 UIView/UIImageView 以供选择

这是我在自定义 tableviewcell 中用于自定义渐变的示例代码:

UIView *selctionView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height)] autorelease];

CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = selctionView.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor blueColor] CGColor], (id)[[UIColor redColor] CGColor], nil];

[selctionView.layer insertSublayer:gradient atIndex:0];

[self setSelectedBackgroundView:selctionView];

编辑:

我发现你也可以使用这些方法:

[test.layer setBorderColor: [[UIColor redColor] CGColor]];
[test.layer setBorderWidth: 1.0]; 

对于图层。

一定要导入 QuartzCore.h

对于整个 tableview:

[tableViewController.tableView setSeparatorColor:[UIColor redColor]];

【讨论】:

嘿,谢谢。这是我的实际要求:我使用的是 splitviewcontroller。在这种情况下,当我在 rootviewcontroller 中选择特定单元格时,需要更改相应单元格的 4 侧边框颜色。 没问题,您还可以在选择时制作动画(例如将渐变从“暗到亮”更改为“亮到暗”),看起来非常棒,我只是在选择它时遇到了一些错误再次选中。 是的。这真的很好用。如何在不影响其他单元格的情况下更改所选单元格的文本颜色? 我认为您必须更改 'didSelectRowAtIndexPath:' 方法中的颜色 再次查询。如何设置高亮单元格的右侧和左侧边框颜色?【参考方案2】:

这真的很简单,因为 OS 3.0 只是在 willDisplayCell 方法中设置单元格的背景颜色。不得在 cellForRowAtIndexPath 中设置颜色。

这适用于普通样式和分组样式:

代码:

(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath cell.backgroundColor = [UIColor redColor];

P.S:这里是 willDisplayCell 的文档摘录:

"A table view sends this message to its delegate just before it uses cell to draw a row, thereby permitting the delegate to customize the cell object before it is displayed. This method gives the delegate a chance to override state-based properties set earlier by the table view, such as selection and background color. After the delegate returns, the table view sets only the alpha and frame properties, and then only when animating rows as they slide in or out."

我在 colionel 的这篇文章中找到了这些信息。谢谢他!

【讨论】:

以上是关于在 UITableView 中突出显示所选单元格的边框的主要内容,如果未能解决你的问题,请参考以下文章

UITableView - 如何在拖放期间更改单元格的背景颜色?

UITableView 单元格选择颜色?

如何在 UITableView 部分之间添加空间?

如何快速按下所选单元格的IndexPath

在 UITableView 中显示单元格的奇怪问题

ios 7 uitableview 所选单元格在 beginupdates 后失去边框