2017-04-03 2 views
0

Ich bin auf der Suche nach einem Weg in Xcode und Swift zu erkennen, ob mein Benutzer die App heruntergescrollt hat.Erkennen ist Benutzer hat auf iOS gescrollt und dann die Farbe der Ansicht geändert

Wenn sie haben möchte ich die Ansicht an der Spitze der App von transparent zu schwarz drehen. Wenn der Benutzer wieder nach oben scrollt, ändert sich die Ansicht von schwarz zurück zu transparent.

Ist das in Swift und Xcode möglich?

Vielen Dank im Voraus! :)

UPDATE Sorry, ich habe vergessen zu erwähnen, ich benutze uiwebview, mit meiner Ansicht überlagert darüber. Am oberen Rand der App wird es transparent und wenn ich in der Webansicht nach unten scrolle, wird es schwarz. Kann ich die Schriftrolle immer noch auf die gleiche Weise erkennen?

+0

Check this post http://stackoverflow.com/questions/40667985/how-to-hide-the-navigation-bar-and-toolbar-as-scroll-down-swift-like-mybridge/40670196 # 40670196 – Joe

Antwort

0

Sie können das Scroll-Ereignis abfangen, indem Sie Ihren Controller oder eine andere Klasse auf das Protokoll UISCrollViewDelegate hören lassen.

Achten Sie besonders auf scrollViewDidScroll (wenn das Scrollen beginnt) und scrollViewDidEndDecelerating (wenn das Scrollen endet).

Letzteres benötigt etwas Zeit, also können Sie auch die contentOffset in scrollViewDidScroll überprüfen, um diesen Zustand sofort zu erfassen.

Wenn Sie nicht wissen, wie Sie die backgroundColor einer Ansicht ändern, stellen Sie eine andere Frage.

0

Sie haben Scroll Verfahren zum Nachweis von Scrollrichtung wie unten zu implementieren:

private var lastContentOffset: CGFloat = 0 

    func scrollViewDidScroll(scrollView: UIScrollView!) { 
     if (self.lastContentOffset > scrollView.contentOffset.y) { 
      // move up 
     } 
     else if (self.lastContentOffset < scrollView.contentOffset.y) { 
      // move down 
     } 

     // update the new position 
     self.lastContentOffset = scrollView.contentOffset.y 
    } 

Referenz: How to get UIScrollView vertical direction in Swift?

0

Ja, es ist möglich, in schnell. Sie müssen UIScrollViewDelegate-Methoden verwenden, um das Scrollen zu steuern.

func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView) { 

    print("scrollViewWillBeginDecelerating") 

    let actualPosition = scrollView.panGestureRecognizer.translation(in: scrollView.superview) 
    if (actualPosition.y > 0){ 
     // Dragging down 

     UIView.animate(withDuration: 3, animations: { 
      //Change the color of view 
     }) 
    }else{ 
     // Dragging up 

     UIView.animate(withDuration: 3, animations: { 
      //Change the color of view 
     }) 
    } 
} 
Verwandte Themen