UIScrollView代理的调用时机

  • func scrollViewDidScroll(_ scrollView: UIScrollView)
    scrollView滚动时调用,在滚动过程中会多次调用

  • func scrollViewWillBeginDragging(_ scrollView: UIScrollView)
    将要开始拖拽时调用

  • func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer)
    将要停止拖拽时 velocity:加速度 向左滑动 x为负值,否则为正值 向上滚动为y为负值否则为正值;targetContentOffset:滚动停止时的ContentOffset

  • func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool)
    停止拖拽时调用, willDecelerate:停止拖拽时是否要减速,若值为false表示已经停止减速,也就意味着滚动已停止,此时不会调用scrollViewWillBeginDecelerating和scrollViewDidEndDecelerating;若值为true,则代表scrollView正在减速滚动

  • func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView)
    开始减速的时候调用(也就是松开手指时),在拖拽滚动的时候,如果松手时已经停止滚动则不会调用

  • func scrollViewDidEndDecelerating(_ scrollView: UIScrollView)
    停止减速的时候调用(也就是停止滚动的时候调用),在拖拽滚动的时候,如果松手时已经停止滚动则不会调用

  • func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView)
    当调用setContentOffset(_ contentOffset: CGPoint, animated: Bool)/scrollRectToVisible(_ rect: CGRect, animated: Bool)API并且animated参数为true时,会在scrollView滚动结束时调用。若是UITableView或者UICollectionView,调用scrollToRow也和上面一样
  • func viewForZooming(in scrollView: UIScrollView) -> UIView?
    放回要缩放的view,此view必须是scrollView的subview
  • func scrollViewDidZoom(_ scrollView: UIScrollView)
    当scrollView缩放时调用,在缩放过程中会被多次调用

  • func scrollViewWillBeginZooming(_ scrollView: UIScrollView, with view: UIView?)
    scrollView开始缩放时调用

  • func scrollViewDidEndZooming(_ scrollView: UIScrollView, with view: UIView?, atScale scale: CGFloat)
    scrollView结束缩放时调用

  • func scrollViewShouldScrollToTop(_ scrollView: UIScrollView) -> Bool
    是否允许点击scrollview的头部,让其滚动到最上面,若不实现此代理,则默认为true
  • func scrollViewDidScrollToTop(_ scrollView: UIScrollView)
    当滚动到最上面时调用

你可能感兴趣的:(UIScrollView代理的调用时机)