ios - 使用 CAKeyFrameAnimation 的时变绘图的高效动画

标签 ios core-animation cakeyframeanimation cashapelayer

我目前的目标是在我的 iOS 应用程序中以动画方式绘制图片,以便用户可以看到类似 http://www.youtube.com/watch?v=xlDmk5WdaHk 的内容。发生在他们的屏幕上。

我的绘图加速度随时间变化,因此我使用 CAKeyFrameAnimationkeyTimes 构建了我的动画。目前,我只有一个指定绘图所有点的贝塞尔曲线路径,我将路径添加到我的 CAShapeLayer 对象,然后在我开始动画时将路径传递给我的动画对象.

我的问题: 完成的绘图立即出现在屏幕上,然后我的笔光标根据我的 keyTimes 值沿着图片移动,而不是具有笔触颜色填写与我的笔光标在屏幕上的移动串联,以产生与视频相同的效果。

我注意到这个 SO 问题,其中推荐的解决方案是为动画中的每个点生成一个单独的路径:How to Animate CoreGraphics Drawing of Shape Using CAKeyframeAnimation

鉴于我有 100-300 个单独的点,是否有比创建包含数百个路径(每条路径中有几百个值)的数组更有效的方法来生成随时间变化的绘图,其中的路径位于这种形式:

path0 = point0...point0...point0...point0... 
path1 = point0...point1...point1...point1...
path2 = point0...point1...point2...point2...
path3 = point0...point1...point2...point3...

然后获取该路径数组,将其传递到 myAnimation.values 并使用我的 keyTimesvalues 设置动画?或者这真的是最好的方法吗?

提前致谢

最佳答案

如果您的点位于贝塞尔曲线路径上,肯定有更有效的方法。 CAShapeLayer 有两个小属性,叫做 strokeStart 和 strokeEnd。如果您最初将 strokeEnd 设置为零,那么您的路径将不会显示。在 1.0 时它将完全显示。将值从零增加到一将相应地跟踪您的曲线。这是一个动画属性,因此将其值与其他动画的关键时间同步,您的绘图将随着“笔”的移动而出现。

关于ios - 使用 CAKeyFrameAnimation 的时变绘图的高效动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15343057/

相关文章:

ios - CAKeyframeAnimation动画开始没有第一帧(路径)

ios - 为什么我无法运行 "pod update"?

ios - 同时动画两个 UIView subview 不起作用

ios - 什么时候不在 IOS 应用程序中使用 APNS?

ios - 是否可以在彩色 View 上方添加透明层或 View ?

ios - iOS 3.2 上的 CATransaction + UIView

objective-c - CAKeyframeAnimation 关键路径错误

具有多个属性的 CSS 关键帧动画

ios - 创建 tableview 所有数据的 pdf

objective-c - 无法更改 UISearchbar 文本字段的大小