Wie kann ich eine UIScrollView
in meinem Code nach unten scrollen? Oder, allgemeiner ausgedrückt, zu einem beliebigen Punkt einer Unteransicht?
Antworten
Zu viele Anzeigen?Für Horizontal ScrollView
Wenn Sie wie ich einen Horizontal ScrollView haben und bis zum Ende des ScrollViews scrollen wollen (in meinem Fall bis ganz rechts), müssen Sie einige Teile der akzeptierten Antwort ändern:
Objektiv-C
CGPoint rightOffset = CGPointMake(self.scrollView.contentSize.width - self.scrollView.bounds.size.width + self.scrollView.contentInset.right, 0 );
[self.scrollView setContentOffset:rightOffset animated:YES];
Schnell
let rightOffset: CGPoint = CGPoint(x: self.scrollView.contentSize.width - self.scrollView.bounds.size.width + self.scrollView.contentInset.right, y: 0)
self.scrollView.setContentOffset(rightOffset, animated: true)
Die Kategorie ist die Rettung!
Fügen Sie dies irgendwo in eine gemeinsame Kopfzeile eines Dienstprogramms ein:
@interface UIScrollView (ScrollToBottom)
- (void)scrollToBottomAnimated:(BOOL)animated;
@end
Und dann zu dieser Utility-Implementierung:
@implementation UIScrollView(ScrollToBottom)
- (void)scrollToBottomAnimated:(BOOL)animated
{
CGPoint bottomOffset = CGPointMake(0, self.contentSize.height - self.bounds.size.height);
[self setContentOffset:bottomOffset animated:animated];
}
@end
Dann implementieren Sie es, wo immer Sie wollen, zum Beispiel:
[[myWebView scrollView] scrollToBottomAnimated:YES];
Während Matt
Lösung scheint mir richtig zu sein, dass Sie auch den Einschub für die Sammlungsansicht berücksichtigen müssen, falls ein solcher eingerichtet wurde.
Der angepasste Code wird sein:
CGSize csz = sv.contentSize;
CGSize bsz = sv.bounds.size;
NSInteger bottomInset = sv.contentInset.bottom;
if (sv.contentOffset.y + bsz.height + bottomInset > csz.height) {
[sv setContentOffset:CGPointMake(sv.contentOffset.x,
csz.height - bsz.height + bottomInset)
animated:YES];
}