我对iPhone中的objective c编码是个新手。我使用下面的代码对图像进行了40秒的动画处理
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:40.0];
object.transform = CGAffineTransformMakeRotation(1.57);
[UIView commitAnimations];我需要在10秒后加速动画。也就是说,动画应该在上面的值上工作10秒,之后动画速度应该会增加。
发布于 2009-12-14 20:42:40
您将不能使用
[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
如果我没记错,你想做一系列键控动画
发布于 2009-12-15 05:50:59
试试[UIView setAnimationCurve:]。UIViewAnimationCurveEaseIn可能会为您做这件事。
如果您确实需要精确控制--“x速度持续10秒,然后y速度持续30秒”--最简单的方法可能是两个动画,第二个动画在第一个动画完成后立即开始。设置一个代理,以便在第一个动画结束后获得回调,您可以立即启动第二个动画。(我以前用过它来实现一个“反弹”,视图先向上,然后向下动画。)可能比尝试制作整个关键帧动画更容易。
发布于 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数组。
诚挚的问候。
https://stackoverflow.com/questions/1900594
复制相似问题