UIScrollView 的滑动研究

有时候我们需要根据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的滑动状态了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值