【问题标题】:What is the frame rate and speed function for animateWithDurationanimateWithDuration 的帧率和速度函数是多少
【发布时间】:2014-04-23 19:46:09
【问题描述】:
[UIView animateWithDuration: animations:^{}]

我正在用我自己的自定义动画方法替换上面的用法。不过,我很喜欢它的标准效果。

所以我的问题是 animateWithDuration 的帧速率是多少?

animateWithDuration 的功能是什么?我不需要知道如何实现它的算法或任何东西,只需要速度/加速度的数学方程。

【问题讨论】:

  • “animateWithDuration 的帧率”是什么意思?
  • 不是上述的副本。我想复制 UIViewAnimationOptionCurveEaseInOut 选项的效果,使用我自己定制的动画视图算法。我编写的算法每秒在间隔位置 X 次绘制 UIView。 animateWithDuration 方法的工作方式相同 - 我想知道 animateWithDuration 方法中 X 的值。
  • "我编写的算法在间隔位置每秒绘制 UIView X 次。"你为什么宁愿那样做? UIView 动画或核心动画有什么不能做的?构建自己的系统很少是正确的解决方案。
  • 简而言之,我有一个自定义框架,我已经在我的应用程序中使用它来放置控件等。我在 java 中也有一个(几乎)相同的框架,它允许 android 版本看起来相同容易地。我在让 animateWithDuration 完全按照我想要的方式行事时遇到了很多麻烦。通过我编写的动画代码,我可以知道 android/iOS 版本正在做同样的事情。

标签: objective-c animation uiview frame-rate animatewithduration


【解决方案1】:

“速度”功能易于检查。 CocoaTouch 动画使用 Core Animation 实现,“速度”使用CAMediaTimingFunction 实现:

CAMediaTimingFunction *function = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseInEaseOut];

然后调用getControlPointAtIndex:values:获取时序函数曲线(三次贝塞尔曲线)的控制点。

当然,帧速率取决于设备显示、GPU(+ 其他硬件组件)和当前负载。当然,您根本不应该关心帧速率。仅适用于动画开始后的时间。

但是,用您自己的实现替换默认动画几乎总是错误的。动画非常易于使用,您无法真正击败它们的表现。如果您需要更复杂的动画,可以使用较低级别的Core Animation。从头开始替换动画是……一个非常糟糕的主意。

【讨论】:

    猜你喜欢
    • 2014-02-14
    • 1970-01-01
    • 2010-12-17
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    相关资源
    最近更新 更多