【发布时间】:2010-12-09 11:00:53
【问题描述】:
在我看来,iPhone 比其他智能手机有很大的优势,因为它在 UIKit 中具有直观、流畅和感觉良好的滚动组件。我想用 UIKit 实现一个使用这种滚动的简单游戏,但我不能使用 UIScrollView,因为它的可定制性不够。
我尝试自己实现这种滚动并尝试了两种不同的方法:
-
我使用了 UIPanGestureRecognizer 并根据识别器提供给我的翻译移动了自定义控件的边界。为了在移动过程中抬起手指后获得平滑滚动,我开始制作动画。我使用识别器给我的速度和固定时间来计算我抬起手指后它应该滚动多远。我尝试了线性运动和缓动运动,但两者看起来都很奇怪。 (稍后会详细介绍)
> 我使用 OnTouchMoved 和 OnTouchEnded 来实现滚动。在 OnTouchMove 中,我根据手指的移动移动边界。当手指移动时,我计算当前和最后一次触摸的位置和时间的差异,以便自己计算速度。当手指抬起时,我在 OnTouchEnded 中启动动画,就像在 1 中一样。但我使用的是我自己计算的速度。
这两种方法都没有给我想要的结果。抬起手指后,滚动不顺畅。速度曲线似乎有一个(急剧的)弯曲。
有人知道苹果是如何实现平滑滚动的吗?我目前的猜测是,我用两个非常接近的点进行插值是不准确的,并且没有考虑当前的加速度。
谢谢你的想法! 凯
【问题讨论】:
标签: uikit uiscrollview velocity interpolation