Iphone 是否可以同时有多个动画代理?

Iphone 是否可以同时有多个动画代理?,iphone,cocoa-touch,uikit,core-animation,Iphone,Cocoa Touch,Uikit,Core Animation,我担心这是不可能的,因为UIView的+setAnimationDelegate:是一个类方法。但也许我错了 背景: 问题是,我有许多相同类的对象,我想实现一个方法,专门为该对象制作一些漂亮的动画。这些动画有点复杂,由几个阶段组成。所以我需要在动画停止时得到通知。现在,该类中的10个对象可能同时开始制作动画。为多个对象设置不同动画代理的唯一方法是让它们属于UIView的不同子类。正如您所想,由于+setAnimationDelegate:是一种类方法,因此不能为同一类的不同实例设置单独的动画代理

我担心这是不可能的,因为UIView的+setAnimationDelegate:是一个类方法。但也许我错了

背景:
问题是,我有许多相同类的对象,我想实现一个方法,专门为该对象制作一些漂亮的动画。这些动画有点复杂,由几个阶段组成。所以我需要在动画停止时得到通知。现在,该类中的10个对象可能同时开始制作动画。

为多个对象设置不同动画代理的唯一方法是让它们属于UIView的不同子类。正如您所想,由于
+setAnimationDelegate:
是一种类方法,因此不能为同一类的不同实例设置单独的动画代理。

为多个对象设置不同动画代理的唯一方法是使它们属于UIView的单独子类。正如您所想,由于
+setAnimationDelegate:
是一个类方法,因此不能为同一类的不同实例设置单独的动画代理。

每个动画块都有自己的代理
+[UIView setAnimationDelegate:
+[UIView setAnimationDidStopSelector:
仅在
+[UIView beginAnimations:context://code>和
+[UIView commitAnimations]
之间调用时执行任何操作,并且仅影响该块设置的动画。

每个动画块都有自己的委托
+[UIView setAnimationDelegate:
+[UIView setAnimationDidStopSelector:
仅在
+[UIView beginAnimations:context:
+[UIView Committeanimations]
之间调用时执行任何操作,并且仅影响该块设置的动画。

+[UIView beginAnimations:context:]
方法允许您传递传递给完成方法的特定
上下文。当调用completion方法时,可以使用该上下文在各种实例之间取消分配

由于上下文类型为
(void*)
,因此它几乎可以是您想要的任何内容,即指向对象实例、唯一ID或自定义结构的指针


如果您的对象都实现了一个公共协议,那么您可以将它们作为上下文传递,并在
animationDidStop
方法中调用协议定义的方法。因此,即使只有一个类范围的
animationDidStop
方法,它也可以充当扇出方法调度器。

方法
+[UIView beginAnimations:context::
允许您传递传递给完成方法的特定
上下文。当调用completion方法时,可以使用该上下文在各种实例之间取消分配

由于上下文类型为
(void*)
,因此它几乎可以是您想要的任何内容,即指向对象实例、唯一ID或自定义结构的指针


如果您的对象都实现了一个公共协议,那么您可以将它们作为上下文传递,并在
animationDidStop
方法中调用协议定义的方法。因此,即使只有一个类范围的
animationDidStop
方法,它也可以充当扇出方法调度器。

很酷。例如,我可以在调用beginAnimations时将“self”设置为上下文?我马上就去试试。酷。例如,我可以在调用beginAnimations时将“self”设置为上下文?我马上就去试试。