ios - 一旦在TableView中选择了单元格,就更新单元格的渐变颜色

标签 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

最佳答案

补充说,我建议将其放入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

关于ios - 一旦在TableView中选择了单元格,就更新单元格的渐变颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51951701/

相关文章:

ios - UIPageViewController Transition Style = Page curl 工作正常,Scroll 抛出索引越界?

ios - 如何将字符串数据发送到 UIButton 标签?

ios - 使用移动代码(手机验证)的 Firebase 身份验证登录代码已过期

swift - 将大数据从 firestore 加载到 TableView Swift

ios5 - UINavigationController 内的 UITableViewController 下面的 iAd

ios - 将 UIBarButtonItem 添加到推送到 UINavigationcontroller 上的 ViewController

jquery - 用户启动的播放按钮不会触发视频在 iOS 中自动启动

ios - 使用 Backbone.js/Zepto.js 的动画

ios - 重用 View Controller 及其 ivars、scrollviews、tableview

ios - 如何用windows PC调试ios.iphone网站