UITableView - 自定义 UITableViewCell 中的自定义 selectedBackgroundView 选择时隐藏单元格分隔符
Posted
技术标签:
【中文标题】UITableView - 自定义 UITableViewCell 中的自定义 selectedBackgroundView 选择时隐藏单元格分隔符【英文标题】:UITableView - Custom selectedBackgroundView in custom UITableViewCell hides cell separator when selected 【发布时间】:2017-07-07 19:54:39 【问题描述】:我有一个UITableView
,它呈现自定义类DrawerTableCell
的单元格,它是这样声明的:
class DrawerTableCell: UITableViewCell
@IBInspectable var selectionColor: UIColor = .gray
didSet
configureSelectedBackgroundView()
func configureSelectedBackgroundView()
let view = UIView()
view.backgroundColor = selectionColor
selectedBackgroundView = view
创建此UITableViewCell
子类是为了能够为单元格指定选定的背景颜色。
在我的视图控制器中我设置:
tableView.separatorColor = .white
我这样配置单元格:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "drawerCell") as! DrawerTableCell
cell.selectionColor = UIColor.blue
return cell
结果是当没有选择单元格时,所有的分隔符都正确显示。当我选择一个单元格时,显示背景颜色,但分隔符仅隐藏在所选单元格中。
关于如何将分隔线保留在所选单元格中的任何想法?
谢谢。
【问题讨论】:
2020 年在这里寻找完整的解决方案:***.com/a/64582629/171933 【参考方案1】:根据Apple的文档,UITableViewCell仅在选择单元格时将此属性的值添加为子视图。如果它不是 nil 或在所有其他视图之后,它会将选定的背景视图作为子视图添加到背景视图 (backgroundView) 的正上方。
因此,据此,我认为您的分隔符已隐藏,因为它位于您的新视图下方。尝试将您的 selectionColor 设置为 .clear ,看看会发生什么。如果这不起作用,您也可以尝试完全删除表格视图上的分隔符,然后在每个单元格的底部添加一条 0.5px 的线。
【讨论】:
以上是关于UITableView - 自定义 UITableViewCell 中的自定义 selectedBackgroundView 选择时隐藏单元格分隔符的主要内容,如果未能解决你的问题,请参考以下文章
如何在已经是 NIB 的 UICollectionViewCell 中加载带有自定义单元格的 UITable