我怎么可以创建多个属性的CABasicAnimation? [英] How can I create an CABasicAnimation for multiple properties?
本文介绍了我怎么可以创建多个属性的CABasicAnimation?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这样的code动画一个CALayer的元素。
I have this code to animate a CALayer element.
CABasicAnimation *makeBiggerAnim=[CABasicAnimation animationWithKeyPath:@"radius"];
makeBiggerAnim.duration=0.2;
makeBiggerAnim.fromValue=[NSNumber numberWithDouble:20.0];
makeBiggerAnim.toValue=[NSNumber numberWithDouble:40.0];
makeBiggerAnim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
我的问题是,现在一切正常,我想在同一时间同一元素的另一个属性。我已经看到了你可以做添加剂的动画之类的东西。
My question is, now everything works fine, I would like another attribute of the same element at the same time. I've seen you can do additive animations and stuff.
我的问题是:
- 是加属性做到这一点的最好的/唯一方式吗? (在同一对象的一次多个属性动画一次)
谢谢!
推荐答案
您可以创建一个 CAAnimationGroup
和自定义它的持续时间和定时功能。然后创建所有的 CABasicAnimations
,设置他们的重视,并将其添加到动画组。最后,动画组添加到您的动画层。
You can create an CAAnimationGroup
and customize the duration and timing function on it. Then you create all your CABasicAnimations
, set their to value and add them to the animation group. Finally, you add the animation group to the layer that you are animating.
下面的例子:
CABasicAnimation *makeBiggerAnim=[CABasicAnimation animationWithKeyPath:@"cornerRadius"];
makeBiggerAnim.fromValue=[NSNumber numberWithDouble:20.0];
makeBiggerAnim.toValue=[NSNumber numberWithDouble:40.0];
CABasicAnimation *fadeAnim=[CABasicAnimation animationWithKeyPath:@"opacity"];
fadeAnim.fromValue=[NSNumber numberWithDouble:1.0];
fadeAnim.toValue=[NSNumber numberWithDouble:0.0];
CABasicAnimation *rotateAnim=[CABasicAnimation animationWithKeyPath:@"transform.rotation.y"];
rotateAnim.fromValue=[NSNumber numberWithDouble:0.0];
rotateAnim.toValue=[NSNumber numberWithDouble:M_PI_4];
// Customizing the group with duration etc, will apply to all the
// animations in the group
CAAnimationGroup *group = [CAAnimationGroup animation];
group.duration = 0.2;
group.repeatCount = 3;
group.autoreverses = YES;
group.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
group.animations = @[makeBiggerAnim, fadeAnim, rotateAnim];
[myLayer addAnimation:group forKey:@"allMyAnimations"];
这篇关于我怎么可以创建多个属性的CABasicAnimation?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文