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?

7voto

Kim Punkte 101

Die Verwendung von UIScrollViews setContentOffset:animated: Funktion, um in Swift nach unten zu blättern.

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

7voto

Robert Koval Punkte 391

Wenn Sie scrollView irgendwie ändern contentSize (z. B. etwas zu stackView hinzufügen, das sich innerhalb von scrollView befindet), müssen Sie die scrollView.layoutIfNeeded() vor dem Blättern, sonst geschieht nichts.

Ejemplo:

scrollView.layoutIfNeeded()
let bottomOffset = CGPoint(x: 0, y: scrollView.contentSize.height - scrollView.bounds.size.height + scrollView.contentInset.bottom)
if(bottomOffset.y > 0) {
    scrollView.setContentOffset(bottomOffset, animated: true)
}

6voto

nico Punkte 9578

Ich habe auch eine andere nützliche Möglichkeit gefunden, dies zu tun, wenn Sie eine UITableview verwenden (die eine Unterklasse von UIScrollView ist):

[(UITableView *)self.view scrollToRowAtIndexPath:scrollIndexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES];

6voto

Mauro García Punkte 107

Schnell:

Sie könnten eine Erweiterung wie diese verwenden:

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

Verwendung:

scrollView.scrollsToBottom(animated: true)

5voto

Pieter Punkte 521

Mit einer (optionalen) footerView y contentInset so lautet die Lösung:

CGPoint bottomOffset = CGPointMake(0, _tableView.contentSize.height - tableView.frame.size.height + _tableView.contentInset.bottom);
if (bottomOffset.y > 0) [_tableView setContentOffset: bottomOffset animated: YES];

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