我实现了一个自定义的UITableView单元格。
一切都很好,直到我点击了我的tableview单元格。
通常,当我点击它时,tableview单元格会变暗。
这是因为cell.selectionStyle被设置为.default,而UITableViewCell的子类通过调用setHighlighted来调暗自己(_ highlight:Bool,animated:Bool)。
我的问题是,在我的表中选择行(单元格)时,UITableViewCell内容视图中包含的除UIImageView之外的所有内容都会被正确变暗。
我尝试在我的UIImgeView上添加黑色UIView叠加层,并覆盖我的自定义tableview单元格的setHighlighted,以改变UIView的不透明度以匹配其余的单元格内容。但是,这不仅影响每次都无法可靠地触发,而且它也不会与其余的单元组件进行相同的动画。叠加层的不透明度变化是即时的,而iOS提供的默认调光效果是渐进的。
我真的很感激任何见解。我想这是许多其他人可能有的问题,但谷歌搜索没有产生任何结果。谢谢。为了以防万一,我在下面包含了我的自定义UITableViewCell的代码。
(?:/\w+)*
}
答案 0 :(得分:0)
我认为你的问题在
override func setHighlighted(_ highlighted: Bool, animated: Bool) {
super.setSelected(highlighted, animated: animated)
/* Logic to dim imageview */
if highlighted {
imageDim.backgroundColor = UIColor.black.withAlphaComponent(0.2)
} else {
imageDim.backgroundColor = UIColor.black.withAlphaComponent(0.0)
}
}
据我所知,当您选择单元格时,不会调用UITableViewCell的setHighlighted
。
相反,将其更改为
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
/* Logic to dim imageview */
if selected {
imageDim.backgroundColor = UIColor.black.withAlphaComponent(0.2)
} else {
imageDim.backgroundColor = UIColor.black.withAlphaComponent(0.0)
}
}