滚动视图时黑色到清除渐变消失
Black to Clear Gradient Disappears when view is scrolled
我有一个 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
}()
以下是初始行为。
下面是滚动后的行为。
有什么建议吗?
编辑
我包含了一些额外的代码,其中包括 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)
正在 override func viewWillLayoutSubviews()
创建视图
而不是 override func viewDidLoad()
因此无论何时滚动视图都会创建另一个渐变实例,无论调用 viewWillLayoutSubviews 多少次都会导致多个渐变被覆盖。
我有一个 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
}()
以下是初始行为。
下面是滚动后的行为。
有什么建议吗?
编辑 我包含了一些额外的代码,其中包括 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)
正在 override func viewWillLayoutSubviews()
创建视图
而不是 override func viewDidLoad()
因此无论何时滚动视图都会创建另一个渐变实例,无论调用 viewWillLayoutSubviews 多少次都会导致多个渐变被覆盖。