3

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

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

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

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

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

我尝试将 removedOnCompletion 设置为 NO。但这也无济于事。我认为底线是我需要知道 AnimationGroup 和 Transaction 之间的区别。

任何人都可以解释这一点,以及我看到的关于我的动画的奇怪之处吗?

谢谢!

4

2 回答 2

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"];
于 2009-08-28T05:26:06.230 回答
0

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

layer.opacity=0.0f;
于 2012-03-30T07:26:07.123 回答