iOS – 如何制作动画轨迹

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

>一个教程讨论了内置工具,但它只在视图控制器转换之间,没有提供我在许多应用程序中看到的完全粒度控制(http://www.doubleencore.com/2013/09/ios-7-custom-transitions/)
> Jazzhands,这是IFTTT的一个套件,但这是一个打包的解决方案,可能无法涵盖如何在较低级别最好地实施解决方案(https://github.com/IFTTT/JazzHands)
>这里有一个问题,其中一个答案显示了手势结束后如何执行动画(iOS Touch,Gestures,Animation)

我没有掌握的 – 我很喜欢使用CAAnimations和手势 – 是什么东西既可以动画也可以互动.

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

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

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

我看到的这种技术的一瞥都涉及关键帧动画,但我不明白的是触摸事件与动画相交的位置,以创建我看到的这些平滑效果.

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

解决方法

What I don’t grasp – and I’m comfortable using CAAnimations and gestures – is how something can be both animated and interactive.

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

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

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

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

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

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

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

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...