我有一个隐含的动画如下:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1];
[UIView setAnimationDelegate:self];
...
[UIView commitAnimations];
当此动画开始和结束时,它会触发这些委托功能:
- (void)animationWillStart:(NSString *)animationID context:(void *)context;
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag;
我在viewController中有多个动画效果,并且委托函数越过了。如何标记特定动画,以便我可以检查它在委托函数中的哪一个?
对我来说,其中一个函数的参数是一个字符串而另一个是CAAnimation的参数也很奇怪。这两种方法都被调用了,但是我使用了错误的方法吗?
答案 0 :(得分:3)
对于像这样的隐式动画,您可以设置animationDidStopSelector
:
[UIView setAnimationDidStopSelector:@selector(animationDidEnd:finished:context:)];
,这将按如下方式致电animationDidEnd
:
- (void) animationDidEnd:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context
这与调用animationWillStartSelecter
beginAnimations:context:
几乎相同
对于两者,您可以使用上下文传递标签或其他值,您的选择器可以使用这些值来区分动画。
答案 1 :(得分:1)
[UIView beginAnimations:nil context:nil];
我在这里疯了还是有一些理由你为animationID(第一个参数)传递nil?无需弄乱上下文,您只需设置ID,然后查看传入didStop选择器的ID。这就是它的用途!