342 Stimmen

UIScrollView programmatisch nach unten scrollen

Wie kann ich eine UIScrollView in meinem Code nach unten scrollen? Oder, allgemeiner ausgedrückt, zu einem beliebigen Punkt einer Unteransicht?

701voto

Ben Gotow Punkte 14565

Sie können die Funktion UIScrollView's setContentOffset:animated: Funktion, um zu einem beliebigen Teil der Inhaltsansicht zu blättern. Hier ist etwas Code, der bis zum Boden blättern würde, vorausgesetzt, Ihre scrollView ist self.scrollView :

Objektiv-C:

CGPoint bottomOffset = CGPointMake(0, self.scrollView.contentSize.height - self.scrollView.bounds.size.height + self.scrollView.contentInset.bottom);
[self.scrollView setContentOffset:bottomOffset animated:YES];

Schnell:

let bottomOffset = CGPoint(x: 0, y: scrollView.contentSize.height - scrollView.bounds.height + scrollView.contentInset.bottom)
scrollView.setContentOffset(bottomOffset, animated: true)

Ich hoffe, das hilft!

153voto

Esqarrouth Punkte 36621

Schnelle Version der akzeptierten Antwort zum einfachen Kopieren und Einfügen:

let bottomOffset = CGPoint(x: 0, y: scrollView.contentSize.height - scrollView.bounds.size.height)
scrollView.setContentOffset(bottomOffset, animated: true)

55voto

Hai Hw Punkte 1347

Die einfachste Lösung:

[scrollview scrollRectToVisible:CGRectMake(scrollview.contentSize.width - 1,scrollview.contentSize.height - 1, 1, 1) animated:YES];

32voto

duan Punkte 7733

Eine geschickte Umsetzung:

extension UIScrollView {
   func scrollToBottom(animated: Bool) {
     if self.contentSize.height < self.bounds.size.height { return }
     let bottomOffset = CGPoint(x: 0, y: self.contentSize.height - self.bounds.size.height)
     self.setContentOffset(bottomOffset, animated: animated)
  }
}

es verwenden:

yourScrollview.scrollToBottom(animated: true)

28voto

vivek241 Punkte 646

Dies ist nur eine Ergänzung zur bestehenden Antwort.

CGPoint bottomOffset = CGPointMake(0, self.scrollView.contentSize.height - self.scrollView.bounds.size.height + self.scrollView.contentInset.bottom);
[self.scrollView setContentOffset:bottomOffset animated:YES];

Es kümmert sich auch um den unteren Einschub (falls Sie diesen verwenden, um Ihre Bildlaufansicht anzupassen, wenn die Tastatur sichtbar ist)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X