在 animationDidStop 中,动画的地址与我添加到图层的动画地址不同?
Posted
技术标签:
【中文标题】在 animationDidStop 中,动画的地址与我添加到图层的动画地址不同?【英文标题】:in animationDidStop, animation 's address is not the same address as the animation i add to the layer? 【发布时间】:2012-12-07 07:20:53 【问题描述】:这样的代码:我在我的视图控制器中存储了 3 个动画,但是当 - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag 被调用时,我发现动画的地址与任何地址都不相同其中,为什么?
- (void) redoAni
circleHalfCaloryMask.alpha = 1;
circleHalfTimeMask.alpha = 1;
circleHalfStopWatchMask.alpha = 1;
//[circleHalfCalory removeFromSuperview];
//circleHalfCalory.alpha = 0;
[circleHalfCaloryMask.layer addAnimation:rotate3 forKey:@"rotate3"];
[circleHalfStopWatchMask.layer addAnimation:rotate2 forKey:@"rotate2"];
[circleHalfTimeMask.layer addAnimation:rotate1 forKey:@"rotate1"];
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
if (anim == rotate1)
circleHalfTimeMask.alpha = 0;
else if (anim == rotate2)
circleHalfStopWatchMask.alpha = 0;
else if (anim == rotate3)
circleHalfCaloryMask.alpha = 0;
else
在 gdb 中:
rotate1 CABasicAnimation * 0x07297280
rotate2 CABasicAnimation * 0x072899a0
rotate3 CABasicAnimation * 0x07297d40
anim CABasicAnimation * 0x07285010
【问题讨论】:
试试这个答案:***.com/questions/1255086/… 【参考方案1】:文档说:
(void)addAnimation:(CAAnimation *)anim forKey:(NSString *)key动画
要添加到渲染树的动画。注意对象是 由渲染树复制,未引用。任何后续 对对象的修改不会传播到渲染中 树。
【讨论】:
好的,我明白了,非常感谢,所以如果我想区分它们,我必须设置一些属性。比如:[rotate2 setValue:@"rotate2" forKey:@"id"];以上是关于在 animationDidStop 中,动画的地址与我添加到图层的动画地址不同?的主要内容,如果未能解决你的问题,请参考以下文章
多个UIButton的旋转动画,animationDidStop怎么知道哪个停了?
animationDidStop:finished: 未调用