UIScrollView代理的调用时机
-
func scrollViewDidScroll(_ scrollView: UIScrollView)
scrollView滚动时调用,在滚动过程中会多次调用 -
func scrollViewWillBeginDragging(_ scrollView: UIScrollView)
将要开始拖拽时调用 -
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>)
将要停止拖拽时 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)
当滚动到最上面时调用