Ste*_*sen 25 cocoa-touch uiscrollview
我希望能够在轻弹手势后预测UIScrollView中的最终静止偏移.它不需要像素精确,但足够接近使得用户不会感觉到差异(即,它不会比他们习惯的那样移动得过多或过多).
我知道有人会问,所以:为什么?我在UIScrollView中有一个类似于表视图的菜单控件.我想这样做,以便最顶层的菜单项完全显示并刷新到UIScrollView的顶部.UIScrollView的分页功能并不是我想要的,因为强大的轻弹不会超过视图范围的倍数.
处理正常的触摸事件很容易.在touchesEnded:withEvent:,我可以滚动到最近的完整菜单项.困难的部分是减速.
减速率有两个常数,UIScrollViewDecelerationRateNormal和UIScrollViewDecelerationRateFast.它们在iPhone OS 3.0中的值为0.998和0.990.我试图弄清楚苹果用来减缓运动的数学运算,但我现在空了.
如果我可以准确地预测最终的静止偏移,那么在减速期间的早期我可以简单地使用scrollRectToVisible:animated:移动到偏移,其中菜单项齐平到视图边界的顶部.
有没有数学倾向的人知道苹果在减速期间可能会做些什么?我应该收集一堆减速事件,绘制它们并提出一些接近的东西吗?
Sam*_*Sam 15
iOS5 UIScrollViewDelegate有一种新方法:scrollViewWillEndDragging:withVelocity:targetContentOffset:.
这非常适合您想要做的事情.
当滚动视图的pagingEnabled属性的值为YES时,不会调用此方法.您的应用程序可以更改targetContentOffset参数的值,以调整scrollview完成其滚动动画的位置.
将UIScrollView's 更改decelerationRate为UIScrollViewDecelerationFast,然后scrollViewDidEndDecelerating移至最近的"页面".
快速减速使完全停止/滑动更自然/更不讨厌.
| 归档时间: |
|
| 查看次数: |
6796 次 |
| 最近记录: |