黑色到清除渐变在滚动视图时消失

时间:2017-09-08 17:46:09

标签: ios swift uicollectionview cagradientlayer

我有一个CAGradientLayer有两种颜色,黑色和清晰。当视图出现时,渐变显示,但是一旦我滚动CollectionView,渐变的清晰部分就会消失。

let gradient: CAGradientLayer = {
    let g = CAGradientLayer()
    g.colors = [UIColor.black.cgColor, UIColor.clear.cgColor]
    g.startPoint = CGPoint(x: 0.5, y: 1)
    g.endPoint = CGPoint(x: 0.5, y: 0)
    return g
}()

以下是最初的行为。 Initial Behavior

以下是滚动后的行为。 Behavior After Scrolling

有什么建议吗?

修改 我已经包含了一些额外的代码,其中包括UIView的设置和渐变层的添加。

let toolBar: UIView = {
    let n = UIView()
    n.translatesAutoresizingMaskIntoConstraints = false
    n.backgroundColor = UIColor.clear
    return n
}()

    view.addSubview(s.toolBar)
    view.addConstraintsWithFormat("H:|[v0]|", views: s.toolBar)
    s.toolBar.heightAnchor.constraint(equalToConstant: 50).isActive = true
    s.toolBar.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    s.toolBar.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true

    s.toolBar.layer.insertSublayer(s.gradient, at: 0)
    s.gradient.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: 50)

1 个答案:

答案 0 :(得分:1)

正在override func viewWillLayoutSubviews()创建视图 而不是override func viewDidLoad()所以每当滚动视图时,会创建另一个渐变实例,但是多次调用viewWillLayoutSubviews会导致多个渐变被覆盖。