iOS - 如何制作动画轨迹

SG1*_*SG1 8 core-animation ios

实现跟踪触摸的平滑倒车动画的最佳方法是什么?我指的是那些动画,其中,例如,如果用户执行滑动手势,一些元素在屏幕上平滑地动画,而其他元素关闭,如果用户反而慢慢地来回拖动平移手势,则相同的对象将向前移动/按照触摸位置向后移动百分比.这可以在许多应用程序介绍中看到,也可以在转换中看到.我已经找到

我不掌握-我习惯使用CAAnimations和手势-是怎样的东西既可以是动画 互动.

通常,当我创建动画时,我提交动画,它从头到尾.虽然我可以在触摸继续时中断动画,但这似乎是笨拙的.

另一方面,响应用户输入移动事物很容易,但这不是动画.

如果某些内容可以根据动画发生变化,效果如何,但同样的动画也会出现与触摸相关的动画,但仍然可以使动画达到完成时不会真正"完成"(变得不可逆转) )除非用户释放触摸,否则在交互期间的任何时刻如果用户释放平移,则动画要么返回到其起始位置,要么根据最后的触摸位置和速度动画到完成.这些要求令人费解.

这种技术我看到所有的一瞥涉及关键帧动画,但我不明白的是,其中的触摸事件与动画相交创建这些顺滑的效果我看.

我们非常欢迎任何提示,示例或教程.

mat*_*att 14

我无法掌握的 - 我很自在地使用CAAnimations和手势 - 是什么东西既可以动画也可以互动.

这是因为,在设置动画后,您可以将该动画设置为您想要的任何"帧".因此,您可以根据手势的移动跟踪动画.

这种方式的工作方式是动画是渲染树的一个特征,属于CALayer.CALayer实现CAMediaTiming协议.因此timeOffset,CALayer确定该图层显示的动画的"帧".如果一个复杂的动画涉及许多不同的层,没有问题; 只需设置timeOffset他们的共同超级层,即可控制整个动画的帧.

事实上,这正是新的iOS 7交互式自定义转换功能的工作方式(您在问题中正确引用).例如,在此示例代码中:

https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/iOS7bookExamples/bk2ch06p296customAnimation2/ch19p620customAnimation1/AppDelegate.m

...我不断更新UIPercentDrivenInteractiveTransition,告诉它用户的手势有多远,动画因此跟踪手势.现在问问自己:这怎么可能?

嗯,UIPercentDrivenInteractiveTransition反过来在幕后,不断调整图层timeOffset来描绘相应帧的动画.(您实际上可以在我的示例中添加日志记录代码,以确保这是真的.)

此外,当我在不完整的点结束手势时,动画要么快速结束或者向后运行到它的开始 - 再次,这是因为CAMediaTiming协议,它允许你改变speed动画,包括负值到向后跑.