滚动 UITableView 与渐变混乱

Posted

技术标签:

【中文标题】滚动 UITableView 与渐变混乱【英文标题】:Scrolling UITableView mess with gradient 【发布时间】:2018-01-20 16:17:07 【问题描述】:

我的 TableViewController 上有一个自定义的 TableViewCell。 该单元格有一个 UIView,它变成了一个渐变,在底部显示黑色,在 UIView 顶部显示清晰(透明)的颜色。

应用加载时看起来不错,但是当我滚动时,渐变变得越来越黑,并且“淡化”本身变得更小并且更接近 UIView 的顶部。

我不知道如何让它保持最初加载应用时的状态。

这是我的代码:

let gradient = CAGradientLayer()
gradient.frame = cell.gradientView.bounds
let colour:UIColor = .black
gradient.colors = [colour.withAlphaComponent(0.0).cgColor,colour.cgColor]

cell.gradientView.layer.insertSublayer(gradient, at: 0)

【问题讨论】:

【参考方案1】:

在 awakeFromNib 中而不是在 cellForRow 中添加此代码,因为由于出队,渐变被多次添加到单元格中

   let gradient = CAGradientLayer()
    gradient.frame = cell.gradientView.bounds
    let colour:UIColor = .black
    gradient.colors = [colour.withAlphaComponent(0.0).cgColor,colour.cgColor]
    self.gradientView.layer.insertSublayer(gradient, at: 0)

【讨论】:

以上是关于滚动 UITableView 与渐变混乱的主要内容,如果未能解决你的问题,请参考以下文章

UIView、UICollectionView、UITableView、UIScrollView 的边界属性理解混乱

编辑第一个 UITextField 时,如何将 UITableView 滚动到第二个 UITextField?

UITableView 在旋转时使用自动布局调整大小

在滚动视图中滚动表格视图

iOS UITableView 滑动时顺序混乱或多个cell内容相同

在具有多个部分的 tableView 中滚动时使用平滑动画更改视图背景渐变颜色