我正在尝试重复动画,直到满足某个条件。像这样:
- (void) animateUpdate {
if (inUpdate) {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:2.0];
[UIView setAnimationDelegate: self];
[UIView setAnimationDidStopSelector: @selector(animateUpdate)];
button.transform = CGAffineTransformMakeRotation( M_PI );
[UIView commitAnimations];
}
}
这将是第一次运行,但不会重复。只有在应用程序崩溃之前,才会调用选择器。
我该怎么做?
感谢。
答案 0 :(得分:0)
Core Animation以异步方式工作,也就是说,您的代码不会阻塞线程,动画实际上会在下一次运行循环时启动。要重复动画,您应该在动画停止选择器中重新启动动画,或者根据需要明确使用CAAnimation的 repeatCount 。否则,Core Animation会将您的所有动画合并为一个。
答案 1 :(得分:0)
同样的问题。这是一些做同样事情的代码
- (void)beginRotation{
[UIView beginAnimations:@"ghostRotate" context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:5.0];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
ghostImage.transform = CGAffineTransformMakeRotation(M_PI*0.5);
[UIView commitAnimations];
}
- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context{
if ([finished boolValue]){
[self beginRotation];
}
}
当第一个动画完成时,它会调用didStop ...这会再次调用beginAnimation方法,该方法会立即再次返回到didStop。 finished设置为1并进入堆栈溢出状态......
想法?