CALayer显式动画表现不正常

时间:2009-08-27 06:09:15

标签: core-animation calayer

隐晦的事情表现得很好。但是,当我尝试使用显式动画在单个图层上执行多个动画时(例如不透明度和平移),我得到奇怪的结果。

首先,我尝试使用CATransaction。然后我切换到CAAnimationGroup。两者似乎都得不到我想要的东西。

我想要什么? 我想要的是一个图层从一个点移动到另一个点,具有初始不透明度和目标不透明度。就是这样!

我在看什么? 这是一个例子......

执行事务开始/提交时,转换似乎是正确的,但不透明度不正确。我的开始不透明度为0,目标不透明度为0.5。 但是当我运行动画时,它会混合到0.5,但然后“捕捉”到1.0(完全不透明)。

我尝试将removedOnCompletion设置为NO。但那也没有帮助。 我认为最重要的是我需要知道AnimationGroup和Transaction之间的区别。

任何人都可以解释一下这个,也可能是我对动画奇怪的看法吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

好的,明确的动画不适合我。 我尝试为不透明度(图层)创建基本动画。我把它放在一个动画组中。当我执行时,没有任何反应。为简单起见,我拿出了翻译动画。这只是试图做不透明度动画。

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"];

答案 1 :(得分:0)

您必须将图层不透明度设置为显式动画中动画后的值。

layer.opacity=0.0f;