在TableView中选择单元格后,更新单元格的渐变颜色

时间:2018-08-21 15:08:23

标签: ios swift uitableview uikit

[在此处输入图片描述] [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

1 个答案:

答案 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