2017-09-08 17 views
0

Ich habe eine CAGradiantLayer mit zwei Farben, schwarz und klar. Wenn die Ansicht angezeigt wird, wird der Verlauf jedoch entsprechend angezeigt, sobald ich meine CollectionView durchblättere, verschwindet der freie Bereich des Verlaufs.Schwarz zu Clear Gradient verschwindet, wenn die Ansicht gescrollt wird

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 
}() 

Unten ist das ursprüngliche Verhalten. Initial Behavior

Unten ist das Verhalten nach dem Scrollen. Behavior After Scrolling

Irgendwelche Vorschläge?

BEARBEITEN Ich habe einige zusätzliche Code enthalten, die sowohl die Einrichtung der UIView und die Zugabe der Gradientenschicht enthält.

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) 
+0

Wo fügen Sie Ihre Ebene hinzu? Die gesamte Sammlungsansicht? –

+0

@FangmingNing Der Farbverlauf wird zu einer UIView hinzugefügt, deren Rahmen der des schwarzen Balkens im zweiten Bild ist. – Stefan

+0

Können Sie den Code zum Hinzufügen dieses UIViews veröffentlichen? Das gibt uns einen besseren Hinweis, warum Ihre Ebene fehlt –

Antwort

0

Die Ansicht wurde bei override func viewWillLayoutSubviews() erstellt, statt override func viewDidLoad() so, wann immer die Ansicht eine weitere Instanz des Gradienten wurde gescrollt wurde jedoch oft viewWillLayoutSubviews erstellt wurde in mehreren Gradienten genannt resultierende überlagert zu werden.

Verwandte Themen