Predicting the resting offset in a UIScrollView after deceleration

前端 未结 3 1178
臣服心动
臣服心动 2020-12-25 12:40

I would like to be able to predict the final resting offset within a UIScrollView after a flick gesture. It doesn\'t need to be pixel-accurate, but close enough so that the

3条回答
  •  生来不讨喜
    2020-12-25 13:03

    You could watch the speed of scrolling while the UIScrollView is decelerating, and when the speed falls beneath a certain value, snap to the nearest menu item.

    You will likely want to implement the UIScrollViewDelegate methods scrollViewDidEndDragging:willDecelerate: and scrollViewDidScroll:. When the user lifts their finger to finish a scroll gesture, scrollViewDidEndDragging:willDecelerate: will be called. Begin monitoring the scrollViewDidScroll: events, and watch the delta between the UIScrollView's current position and its previous position, divided by the time delta:

    float velocity = (currentPosition - lastPosition) / (currentTime - lastTime);
    

    When the velocity falls below a minimum value, call scrollRectToVisible:animated: on the UIScrollView.

提交回复
热议问题