是否可以在iPhone上为动画设置标签或ID?

时间:2009-10-15 00:53:06

标签: iphone objective-c cocoa-touch

我有一个隐含的动画如下:

[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的参数也很奇怪。这两种方法都被调用了,但是我使用了错误的方法吗?

2 个答案:

答案 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。这就是它的用途!