Reputation: 6824
Implicitly things behave fine. But when i try to use explicit animations to do multiple animations on a single layer (e.g. opacity and translation) I get odd results.
First of all, i tried using CATransaction. Then i switched to CAAnimationGroup. Both doesnt seem to get what i want.
What do I want? All i want is for a layer to move from one point to another with an initial opacity and a target opacity. thats it!
What am i seeing? Here is one example...
When performing a transaction begin/commit, the translation appears to be correct, but the opacity is not. My start opacity is 0, and the target opacity is 0.5. However when i run the animations, it blends to 0.5, but then "snaps" to 1.0 (fully opaque).
I tried setting the removedOnCompletion to NO. but that didnt help either. I think the bottom line is that i need to know the difference between an AnimationGroup and a Transaction.
Can anybody explain this, and possibly what im seeing regarding the oddness of my animations?
Thanks!
Upvotes: 3
Views: 1660
Reputation: 14659
You have to set the layers opacity to the value after the animation in explicit animations.
layer.opacity=0.0f;
Upvotes: 0
Reputation: 6824
Ok, explicit animations arent working for me. I tried creating a basic animation for opacity (of a layer). I placed this inside an animation group. When i execute, nothing happens. For simplicity i took out translation animations. This is only trying to do opacity animation.
CAAnimationGroup *group = [CAAnimationGroup animation];
CABasicAnimation *opacityAnimation;
opacityAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
opacityAnimation.fromValue = [NSNumber numberWithDouble:fromalpha];
opacityAnimation.toValue = [NSNumber numberWithDouble:toalpha];
opacityAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
opacityAnimation.delegate = self;
opacityAnimation.duration = 2.7;
opacityAnimation.removedOnCompletion = NO;
group.animations = [NSArray arrayWithObjects: opacityAnimation, nil];
[baseLayer addAnimation:group forKey:@"groupAnim"];
Upvotes: 1