在iOS上模仿无限视图和动画的正确方法

时间:2014-02-05 10:31:37

标签: ios

我正在开发一个看似轮子的控件,用于快速或精确地滚动内容。这是一个来自coach眼睛应用程序的示例:  example scrolling wheel, coach's eye app

我的第一次看起来像这样: my first take on scrolling wheel control

目前垂直线是作为一组UIView实现的。这些垂直线视图可以很容易地用图像视图替换来定制外观。  每次用户平移:

  • 我修改了所有垂直线视图中的frame.origin.x
  • 如果某些观看次数超出屏幕 - 我将其删除
  • 如果左侧或右侧有间隙,我会创建适合该地点的新视图

当用户完成平移手势时,我开始重复NSTimer(使用0.05秒)来设置车轮运动减速的动画。简而言之,在每个计时器循环中:

  • 计算移动线条并移动线条的距离
  • 计算速度减速量并调整速度

几个问题:

  1. 是否有任何iOS框架(例如CoreGraphics,CoreAnimation,UIKitDynamics)比我使用的UIKit API更适合实现这些任务?
  2. 您能否建议更好/更正确的方法来实施“无限滚轮”控制?
  3. 用户完成平移车轮后,您能建议更好的减速方法吗?
  4. 由于

2 个答案:

答案 0 :(得分:0)

我通过自定义SSRollingButtonScrollView使我的“无限滚轮”控制。我想你应该看一次。我希望它会对你有所帮助。

答案 1 :(得分:0)

Apple在UIScrollView中已经有一个很好的加速和减速算法。您可以在幕后使用它来控制其他视图/交互。通过将平移手势从滚动视图连接到另一个视图并充当滚动视图的委托来启用此功能。

查看Enhancing User Experience with Scroll Views WWDC video以获取指导。