2017-09-02 3 views
1

Ich habe Probleme mit der Animation eines Etiketts, um sich in eine andere Position zu bewegen, wenn ein Benutzer horizontal scrollt.Animieren beim Scrollen mit UIScrollView SWIFT

Hier ist das Snippet ich habe:

override func viewDidLoad() { 
    super.viewDidLoad() 

    buttonTextSpacing(UIButton: vysionButton, lineSpacing: 2.5, UIColor: .black) 
    buttonTextSpacing(UIButton: converseButton, lineSpacing: 2.5, UIColor: .black) 
    buttonTextSpacing(UIButton: storiesButton, lineSpacing: 2.5, UIColor: .black) 

    self.storiesCollectionView.delegate = self 
    self.storiesCollectionView.dataSource = self 

    // Scroll View 
    self.scrollView.contentSize = CGSize(width: self.scrollView.frame.width*2, height: self.scrollView.frame.height) 
    self.scrollView.addSubview(storiesCollectionView) 
    self.scrollView.showsHorizontalScrollIndicator = false 
    self.scrollView.delegate = self 


} 

func scrollViewDidScroll(scrollUIView: UIScrollView) { 
    print("scrollViewDidScroll") 
    DispatchQueue.main.async { 
     UIView.animate(withDuration: 0.4, delay: 0, options: UIViewAnimationOptions.curveEaseOut, animations: { 
      self.scrollLabel.center.x = self.storiesButton.center.x - 1 
     }, completion: nil) 
    } 
} 

Im Grunde, was im zu erreichen versucht, ist, dass, wenn ein Benutzer blättert, die Animation beginnt, aber nicht beendet, bis das Blättern zum nächsten benutzerdefinierten uiview beendet ist (I Paging aktiviert haben).

Momentan ist das nicht möglich, ich kann das Scrollereignis nicht aufrufen und sogar die Beschriftung beim Scrollen nicht animieren (an die neue Position).

Vielen Dank im Voraus für Rat oder Hilfe.

Cheers, Pon

Antwort

1

Wie ich verstehe Sie einige Label als Subview auf Scroll haben und dass Etikett über einige Ansichten befindet, die Sie bewegen. Sie können scrollView.contentOffset.x anstelle von Animation verwenden. Zum Beispiel: Sie müssen den Abstand zwischen der Startposition des Etiketts und der Endposition berechnen. Wenn diese Entfernung durch 100 geteilt wird, erhalten Sie einen Schritt (1 Prozent der Distanzbreite), den Sie mit scrollView.contentOffset.x multiplizieren müssen. Geben Sie weitere Details zu Ihrer Frage an.