2009-10-15 62 views
0

我有一个隐式的动画如下:是否可以在iPhone上为动画设置标签或ID?

[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。这两种方法都会被调用,但是我使用了错误的还是什么?

回答

3

对于这样的隐式动画,您将animationDidStopSelector

[UIView setAnimationDidStopSelector:@selector(animationDidEnd:finished:context:)]; 

,这将打电话给你animationDidEnd如下:

- (void) animationDidEnd:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context 

这几乎是一样的,其调用beginAnimations:context:animationWillStartSelecter

对于两者,您都可以使用上下文来传递标签或其他值选择器可以用来区分动画。

1
[UIView beginAnimations:nil context:nil]; 

我在这里疯了还是有一些原因,你传递在零的animationID(第一个参数)?无需混淆上下文,只需设置ID,然后查看传入您的didStop选择器的ID即可。这就是它的原因!

+0

啊,谢谢。我想我没有意识到第一个理由是什么。我确实通过将animationDidEnd选择器设置为一个独特的函数来获得此工作,但知道如何正确设置ID并使用委托方法是很好的。 +1 –

相关问题