次のようなコード: ビューコントローラーに 3 つのアニメーションを保存しましたが、 - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag が呼び出されると、 anim のアドレスがそれらのいずれとも同じではないことがわかりました。なぜ?
- (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