[Iphone] Obtén UIScrollView para desplazarte a la parte superior



Answers

Aquí hay una extensión de Swift que lo hace fácil:

extension UIScrollView {
    func scrollToTop() {
        let desiredOffset = CGPoint(x: 0, y: -contentInset.top)
        setContentOffset(desiredOffset, animated: true)
   }
}

Uso:

myScrollView.scrollToTop()
Question

¿Cómo hago para que un scroll UIScrollView llegue a la cima?




Para Swift 4

scrollView.setContentOffset (.zero, animado: verdadero)




Swift 3.0.1 versión de la respuesta de rob mayoff :

self.scrollView.setContentOffset(
CGPoint(x: 0,y: -self.scrollView.contentInset.top),
animated: true)



Para iOS 11 y versiones posteriores: trabaje con el nuevo conjunto de adjustedContentInset

Por ejemplo (desplazarse hacia la parte superior) :

var offset = CGPoint(x: -scrollView.contentInset.left, 
                     y: -scrollView.contentInset.top)

if #available(iOS 11.0, *) {
    offset = CGPoint(x: -scrollView.adjustedContentInset.left, 
                     y: -scrollView.adjustedContentInset.top)    
}

scrollView.setContentOffset(offset, animated: true)

Incluso si usa prefersLargeTitles , safe area etc.




Desplácese hacia arriba para UITableViewController , UICollectionViewController o cualquier UIViewController tenga UIScrollView

extension UIViewController {

  func scrollToTop(animated: Bool) {
    if let tv = self as? UITableViewController {
        tv.tableView.setContentOffset(CGPoint.zero, animated: animated)
    } else if let cv = self as? UICollectionViewController{
        cv.collectionView?.setContentOffset(CGPoint.zero, animated: animated)
    } else {
        for v in view.subviews {
            if let sv = v as? UIScrollView {
                sv.setContentOffset(CGPoint.zero, animated: animated)
            }
        }
    }
  }
}



Intenté todos los caminos. Pero nada funcionó para mí. Finalmente, me gustó esto.

self.view .addSubview(self.scroll) línea de código self.view .addSubview(self.scroll) en viewDidLoad. Después de comenzar a configurar el marco para la vista de desplazamiento y los componentes añadidos para desplazar la vista.

Funcionó para mí

Asegúrese de haber agregado la línea self.view .addSubview(self.scroll) al principio. entonces puedes agregar elementos de UI.




Links