隐晦的事情表现得很好。但是,当我尝试使用显式动画在单个图层上执行多个动画时(例如不透明度和平移),我得到奇怪的结果。
首先,我尝试使用CATransaction。然后我切换到CAAnimationGroup。两者似乎都得不到我想要的东西。
我想要什么? 我想要的是一个图层从一个点移动到另一个点,具有初始不透明度和目标不透明度。就是这样!
我在看什么? 这是一个例子......
执行事务开始/提交时,转换似乎是正确的,但不透明度不正确。我的开始不透明度为0,目标不透明度为0.5。 但是当我运行动画时,它会混合到0.5,但然后“捕捉”到1.0(完全不透明)。
我尝试将removedOnCompletion设置为NO。但那也没有帮助。 我认为最重要的是我需要知道AnimationGroup和Transaction之间的区别。
任何人都可以解释一下这个,也可能是我对动画奇怪的看法吗?
谢谢!
答案 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;