2017-10-11 5 views
1

Ich versuche diesen Effekt zu erreichen.Wie blende ich eine UIView beim Scrollen?

enter image description here

Ich versuche, eine Ansicht, wie der Benutzer scrollt bis zu verbergen, und es, wenn der Benutzer nach unten scrollt zu offenbaren.

Ich weiß nicht, wie man das macht. Ich habe versucht, als scrollView didScroll-Funktion zu suchen, aber ich bin verloren, wie dies eingerichtet wird. Irgendein Rat?

+1

Zeigen Sie, was Sie bisher gemacht haben? – cole

+0

Bestätigen Sie auch, ist Ihre Ansicht einfach UIView oder tableView oder collectionView? – cole

+0

Meine Wette wäre, sich an das 'contentOffset' von' scrollView' in der 'didScroll' Methode zu erinnern. Wenn Sie dann sehen, dass "scrollView" nach oben geht, sollten Sie Ihre benutzerdefinierte Ansicht (bis zu einem gewissen Punkt) bewegen (animieren) (wie ich zusammen mit alpha sehe). Wenn du bemerkst, dass es untergeht, mach das Gegenteil (auch begrenzt auf den einen Punkt). – Adamsor

Antwort

3

Hiding content on scroll

Bitte überprüfen Sie diese Bibliothek es genau das tun, was Ihr angebracht gif tun.

Der umgekehrte Weg wäre von der Gif-Datei, die Sie anhängen würden. Fügen Sie die Suchleiste oben hinzu. Und machen Sie das Verstecken als Kopfzeile und richten Sie die Suchleiste und die Tabellenansicht aus, um diese Animation zu erhalten.

1

Sie müssen die Containeransicht für die Bildlaufansicht und die Ansicht, die Sie als Stellvertreter für die Bildlaufansicht ausblenden möchten, registrieren, indem Sie diese Klasse dem UIScrollViewDelegate-Protokoll entsprechend registrieren.

Sie müssen auch den Überblick über die Scroll-Ansicht Inhalt Offset-Eigenschaft zu halten, und setvthis auf die Anfänge der Scroll-Ansicht versetzt, wenn es erstellt wird:

fileprivate var scrollOffset : CGPoint 

Dann, wie Sie sagen, die scrollViewDidScroll Methode verwenden :

internal func scrollViewDidScroll(_ scrollView: UIScrollView) { 
    let delta : CGPoint = CGPoint(x: scrollView.contentOffset.x - scrollOffset.x, 
     y: scrollView.contentOffset.y - scrollOffset.y) 

    if delta.y > 0, subviewToFade.isDescendant(of: self) { 
      // fade out subviews and remove 
    else if delta < 0, !subviewToFade.isDescendant(of: self) { 
      // add subviews and fade back in 

    } 

    scrollOffset = scrollView.contentOffset 
} 

Hoffe, dass hilft.

Verwandte Themen