UIScrollView代理方法总结

作者: 天天想念 | 来源:发表于2015-12-20 23:30 被阅读5033次
    @protocol UIScrollViewDelegate<NSObject>
    @optional
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView; 
    // any offset changes 只要scrollView的content 这个方法在任何方式触发 contentOffset 
    // 变化的时候都会被调用(包括用户拖动,减速过程,直接通过代码设置等),可以用于监控 contentOffset 
    // 的变化,并根据当前的 contentOffset 对其他 view 做出随动调整。
    
    // called on start of dragging (may require some time and or distance to move)
    - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView; 
    // 用户开始拖动 scroll view 的时候被调用,可能需要一些时间和距离移动之后才会触发。
    
    // called on finger up if the user dragged. velocity is in points/millisecond. 
    // targetContentOffset may be changed to adjust where the scroll view comes to rest
    - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset NS_AVAILABLE_IOS(5_0);
    // 在 didEndDragging 前被调用,当 willEndDragging 方法中 velocity 为 CGPointZero
    //(结束拖动时两个方向都没有速度)时,didEndDragging 中的 decelerate 为 NO,即没有减速过程,
    //willBeginDecelerating 和 didEndDecelerating 也就不会被调用。反之,
    // 当 velocity 不为 CGPointZero 时,scroll view 会以 velocity 为初速度,
    // 减速直到 targetContentOffset。
    
    - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
    // 在用户结束拖动后被调用,decelerate 为 YES 时,
    // 结束拖动后会有减速过程。注,在 didEndDragging 之后,如果有减速过程,
    // scroll view 的 dragging 并不会立即置为 NO,而是要等到减速结束之后,
    // 所以这个 dragging 属性的实际语义更接近 scrolling。
    
    - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;   // 减速动画开始前被调用。
    
    - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;      
    // 减速动画结束时被调用,这里有一种特殊情况:当一次减速动画尚未结束的时候再次 drag scroll view,
    // didEndDecelerating 不会被调用,并且这时 scroll view 的 dragging 和 decelerating 属性都是 YES。
    // 新的 dragging 如果有加速度,那么 willBeginDecelerating 会再一次被调用,然后才是 didEndDecelerating;
    // 如果没有加速度,虽然 willBeginDecelerating 不会被调用,但前一次留下的 didEndDecelerating 会被调用      
    
    - (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView; 
    // called when setContentOffset/scrollRectVisible:animated: finishes. not called if not animating
    
    - (void)scrollViewDidZoom:(UIScrollView *)scrollView NS_AVAILABLE_IOS(3_2); 
    // any zoom scale changes view缩放改变的时候调用。
    
    - (nullable UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;     
    // return a view that will be scaled. if delegate returns nil, nothing happens
    告诉代理要缩放那个控件。 
    
    - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view NS_AVAILABLE_IOS(3_2); 
    // called before the scroll view begins zooming its content缩放开始的时候调用
    
    - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view atScale:(CGFloat)scale; 
    // scale between minimum and maximum. called after any 'bounce' animations缩放完毕的时候调用。
    
    - (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;   // return a yes if you want to scroll to the top. if not defined, assumes YES- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView;      
    // called when scrolling animation finished. may be called immediately if already at top滚动动画完成时调用。
    @end
    
    

    相关文章

      网友评论

        本文标题:UIScrollView代理方法总结

        本文链接:https://www.haomeiwen.com/subject/zcjmhttx.html