我在触摸图像时开始动画放大,然后在释放图像时将其缩小到正常尺寸。通过使用setAnimationBeginsFromCurrentState:YES,如果你通过动画将手指抬起一部分,缩放效果会很好而且流畅。
然而,我想要做的是,如果你已经触摸图像足够长的时间以完成动画,则“锁定”较大的尺寸,但是如果你过早地释放它会让它恢复正常。
有没有办法判断当前是否有动画正在运行,或者特定动画是否已完成?
我想我可以用performSelector执行此操作:afterDelay:调用touchesStarted,延迟等于动画的长度,如果touchesEnded过早就取消它,但我无法想象这是最好的方法。 ..?
答案 0 :(得分:13)
- (void)animateStuff {
[UIView beginAnimations:@"animationName" context:nil];
[UIView setAnimationDelegate:self];
[self.view doWhatever];
[UIView commitAnimations];
}
- (void)animationDidStop:(NSString *)animationID
finished:(NSNumber *)finished
context:(void *)context
{
if ([finished boolValue]) {
NSLog(@"Animation Done!");
}
}
答案 1 :(得分:1)
另一种可能性:
[UIView animateWithDuration:0.3 animations:^{
myView.transform = CGAffineTransformMakeRotation(M_PI);
}completion:^(BOOL finished) {
NSLog(@"Animation complete!");
}];
答案 2 :(得分:0)
我认为“+(void)setAnimationDidStopSelector:(SEL)选择器”应该做你想要的。一旦动画完成,它将调用代理上的给定选择器。