[在此处输入图片描述] [1]我在表格视图的单元格上添加了一个渐变层。现在,我要在点击特定单元格后更新渐变层的颜色。
func updateGradientColors(colors: [UIColor]) {
if let layer = self.layer.sublayers?.first as? CAGradientLayer {
layer.colors = ColorUtils.cgColorsFromUIColor(colors: colors)
}
}
因此,一旦我在updateGradientColors
委托方法中调用此didSelect
函数,具有新颜色的图层就无法使用适当的帧进行更新。
我还尝试通过更新viewWillLayoutSubviews
函数中的渐变帧。但仍然无法正常工作
func updateGradientFrame() {
if let layer = self.layer.sublayers?.first, layer is CAGradientLayer {
layer.frame = self.bounds
}
}
https://drive.google.com/file/d/1lQDIuYhRITlKLnBDKF1eo6CAXKj4-xgw/view?usp=sharing
答案 0 :(得分:0)
我建议将其放入tableViewCell本身。
override func setSelected(_ selected: Bool, animated: Bool) {
<#code#>
}
要从tableView管理该状态,您必须获得对该单元格的引用
if let cell = tableView.cellForRow(at: indexPath) as? MYCell {
// change color here
}
@Ashley Mills也是正确的:
您确定self.layer.sublayers?。首先是您的CAGradientLayer吗?这非常脆弱-您最好在单元格类中使用var gradientLayer