UIScrollView 的滑动研究

来源:互联网 发布:在线重装mac系统 编辑:程序博客网 时间:2024/06/05 01:57

有时候我们需要根据UIScrollView的滑动位置来做出相应的操作,比如很多日历中都有 month 日历同 week日历的切换,通过UIScrollView可以实现这样的效果,这时候通过判断手离开视图的那个瞬间就需要做出判断了,如果在手指离开屏幕的时候,UIScrollView没有在滑动,那么这时候就可以通过方法

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {    if (!decelerate) {    }}

这个时候 decelerate = NO, 也就是禁止状态,而如果 decelerate = YES, 那么这个时候如果设置 UIScrollView 强行滑动到某一个位置,那是没有效果的,这个时候,我们需要在其另外一个delegate方法之中进行设置:

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {    if(velocity.y != 0) {   // 具有一个速度,矢量,有正负值        CGFloat y = targetContentOffset->y;    }}

如果其x或者y速度不为 0,那么就说明在手指离开屏幕之后,UIScrollView还会继续滑动,那么它会滑动多远呢? 这个就可以通过 targetContentOffset 确定,那么我们就可以根据 targetContentOffset的位置来做出判断,然后决定UIScrollView 最终需要停在哪个位置上。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {}

上面方法,滑动就会调用。
结合这三个方法,基本就可以准确的控制UIScrollView的滑动状态了

0 0
原创粉丝点击