Я хотел бы знать, доступен ли нам метод, который Apple использует для прокрутки UIViewController
, который содержит UIScrollView
, когда пользователь нажимает на строку состояния.
Я пытался найти его, но безуспешно.
Я пытался воспроизвести его, но он не работал на 100%, когда UIViewController
предпочитает отображать большой заголовок (большойзаголовок не расширен).
Как мы можем прокрутить UIViewController
к вершине, как это делает Apple?
После моего испытания:
extension UIViewController {
private var firstScrollView: UIScrollView? {
var scrollView: UIScrollView? = nil
var viewsToCheck = [self.view]
while !viewsToCheck.isEmpty && scrollView == nil {
let viewToCheck = viewsToCheck.remove(at: 0)!
if let viewToCheckAsScrollView = viewToCheck as? UIScrollView {
scrollView = viewToCheckAsScrollView
} else {
viewsToCheck.append(contentsOf: viewToCheck.subviews)
}
}
return scrollView
}
func scrollToTheTop(animated: Bool) {
if let firstScrollView = firstScrollView {
firstScrollView.scrollRectToVisible(CGRect(x: 0, y: 0, width: 1, height: 1), animated: true)
}
}
}