ios - 使用 CAKeyframeAnimation 的交错动画?

标签 ios core-animation

我想在特定时间点为 3 个不同的图像设置动画,使其行为如此。

1) 1st image moves from (Xx, Yx) to (Xz,Yz) 
2) Wait 10 seconds
3) 2nd image appears in place at Xa,Yb
4) Wait half as long as in step 2
5) Fade out 2nd image
6) 3rd image appears at the same place as 2nd image

如果这些图像的每个动画都在它们自己的 CALayers 上,我可以使用具有多个图层的 CAKeyframeAnimation 吗?如果没有,还有什么方法可以制作交错动画?

我正在尝试将纸牌从屏幕外移动到特定位置,然后几秒钟后其他一些技巧会出现在屏幕上。

最佳答案

已编辑
当我写这篇文章时,我认为你不能使用 CAAnimationGroup 来为多个图层设置动画。马特刚刚发布了一个答案,证明你 可以去做。我特此吃掉我的话。
我已将 Matt 答案中的代码改编为我已上传到 Github (link.) 的项目。
Matt 的动画创建的效果是一双脚在屏幕上行走。找了一些开源的foot,安装在项目中,做了一些改动,但是基本的做法是Matt的。给他的 Prop 。
效果如下:
enter image description here
(以下说法不正确)
不,您不能使用关键帧动画为多个图层设置动画。给定的 CAAnimation 只能作用于单个图层。顺便说一下,这包括图层组。
如果你所做的只是在直线上移动图像、淡出和淡入,你为什么不使用 UIView 动画呢?看看名称以 animateWithDuration:animations 开头的方法:它们可以让您同时创建多个动画,然后完成 block 可以触发其他动画。
如果出于某种原因需要使用图层动画,可以使用 beginTime 属性(CAAnimation 对象具有该属性,因为它们符合 CAMediaTiming 协议(protocol)。)对于不属于动画组的 CAAnimations,您可以使用

animation.beginTime = CACurrentMediaTime() + delay;
其中 delay 是一个 double ,它以秒为单位表示延迟。
如果延迟为 0,则动画将开始。
第三种选择是将您的 View Controller 设置为动画的委托(delegate),并使用 animationDidStop:finished: 方法链接您的动画。在我看来,这最终是最困惑的实现方法。

关于ios - 使用 CAKeyframeAnimation 的交错动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19471427/

相关文章:

ios - 在不旋转的情况下应用透视变换

ios - Apple 如何在 map View 的标注中添加评级星?

ios - 在没有 MFMailComposeViewController 弹出窗口的情况下撰写电子邮件

ios - 如何在 Swift 中打开一个 URL?

ios - 未找到 RCTBridgeModule - RNGoogleSignin

iOS objective-C : Determine current 3D rotation of a UIView

cocoa-touch - 在 CALayer 中使用 Core Graphics 绘图

ios - 如何为大型 UIScrollView(随 View 滚动)设置背景图案

ios - 强制更新 subview Controller 的 safeAreaInsets

iphone - IOS 5 和 RemoteIO 的 CABasicAnimation 滞后问题