首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在iPhone中动态加速动画

如何在iPhone中动态加速动画
EN

Stack Overflow用户
提问于 2009-12-14 20:15:28
回答 3查看 1.3K关注 0票数 2

我对iPhone中的objective c编码是个新手。我使用下面的代码对图像进行了40秒的动画处理

代码语言:javascript
复制
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:40.0];
object.transform = CGAffineTransformMakeRotation(1.57);
[UIView commitAnimations];

我需要在10秒后加速动画。也就是说,动画应该在上面的值上工作10秒,之后动画速度应该会增加。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-14 20:42:40

您将不能使用

代码语言:javascript
复制
[UIView beginAnimations:nil context:nil];

构造。看看核心动画框架:

http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CoreAnimation_guide/Articles/AnimatingLayers.html#//apple_ref/doc/uid/TP40006085-SW1

如果我没记错,你想做一系列键控动画

票数 2
EN

Stack Overflow用户

发布于 2009-12-15 05:50:59

试试[UIView setAnimationCurve:]UIViewAnimationCurveEaseIn可能会为您做这件事。

如果您确实需要精确控制--“x速度持续10秒,然后y速度持续30秒”--最简单的方法可能是两个动画,第二个动画在第一个动画完成后立即开始。设置一个代理,以便在第一个动画结束后获得回调,您可以立即启动第二个动画。(我以前用过它来实现一个“反弹”,视图先向上,然后向下动画。)可能比尝试制作整个关键帧动画更容易。

票数 0
EN

Stack Overflow用户

发布于 2009-12-15 06:08:10

您需要在视图层上使用核心动画,而不是使用UIView动画代理。CAKeyframeAnimation将使您能够为动画创建关键帧,并使您能够指定关键时间( CAKeyframeAnimation类中的keyTimes属性),以确定关键帧之间应花费的时间。

这里的诀窍是,您的第一个关键帧将不是结束变换,而是变换的某个中间值。您的最终关键帧将具有您的结束变换。您可以使用关键点时间指定下一个关键帧的开始时间。如果总持续时间为40秒,并且希望第一次速度更改发生在动画的10秒内,则可以指定该更改作为第二个关键帧值,并指定0.25作为关键帧时间(假设您希望它占用整个持续时间的四分之一)。

从文档中:

keyTimes

可选的NSNumber对象数组,用于定义每个关键帧分段的持续时间。

@property(copy) NSArray *keyTimes

讨论

数组中的每个值都是一个介于0.0和1.0之间的浮点数,并与值数组中的一个元素相对应。keyTimes数组中的每个元素将相应关键帧值的持续时间定义为动画总持续时间的一小部分。每个元素值必须大于或等于前一个值。

keyTimes数组中的相应值取决于calculationMode属性。

如果calculationMode设置为kCAAnimationLinear,则数组中的第一个值必须为0.0,最后一个值必须为1.0。值在指定的关键时间之间进行插值。

如果calculationMode设置为kCAAnimationDiscrete,则数组中的第一个值必须为0.0。

如果calculationMode设置为kCAAnimationPaced,则忽略keyTimes数组。

如果keyTimes数组中的值对于calculationMode无效或不合适,则会忽略keyTimes数组。

诚挚的问候。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1900594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档