在我看来,iPhone在其他智能手机上具有很大的优势,因为它在UIKit中具有直观,流畅和良好的滚动组件感。我想用UIKit实现一个使用这种滚动的简单游戏,但我不能使用UIScrollView,因为它不够自定义。
我尝试自己实现这种滚动并尝试了两种不同的方法:
我使用了UIPanGestureRecognizer并根据识别器提供给我的翻译移动了我的自定义控件的边界。为了在移动过程中举起手指后进行平滑滚动,我开始动画。我使用识别器给我的速度和固定的时间来计算我抬起手指后应该滚动多远。我尝试了线性运动和缓和运动,但两者看起来都很奇怪。 (稍后会详述)
我使用OnTouchMoved和OnTouchEnded来实现滚动。在OnTouchMove中,我根据手指的移动移动边界。当手指移动时,我计算当前和最后一次触摸的位置和时间的差异,以便自己计算速度。当手指抬起时,我会像On中一样在OnTouchEnded中开始动画。但我使用的是自我计算的速度。
这两种方法都没有给我我想要的结果。抬起手指后,滚动不顺利。在细胞曲线中似乎存在(急剧)弯曲。
有谁知道苹果如何顺利滚动?我目前的猜测是,我的两个非常接近点的插值是不准确的,并没有考虑当前的加速度。
感谢你的想法! 纪伊
答案 0 :(得分:3)
为什么不在视图顶部添加UIScrollView作为句柄,没有可见内容。然后,您可以使用UIScrollViewDelegate方法更新您对某些操作的真实视图。例如:如果使用scrollViewDidScroll:捕获UIScrollView的滚动,则可以使用scrollview的偏移量更新可见视图。您可以使用scrollViewWillEndDragging:开始将主视图与scrollview同步,并使用scrollViewDidEndDecelerating停止同步。
我使用相同的方法滚动我的Animix应用程序的背景。它在底部有一个看不见的滚动视图,让用户感觉他可以向左和向右拖动草来移动背景。