我会定期向 UIDynamicAnimator 添加一个 UIView,它有自己的一些行为。但是当我从它的超级视图中删除 UIView 时(当它离开屏幕时),UIDynamicAnimator 仍然将 UIView 的行为保留在其“行为”属性中。
我的问题是,究竟什么是处理 UIDynamicAnimator 中行为的最佳方法?
在从视图层次结构中删除 UIView 之前,我是否必须手动跟踪与该 UIView 相关的所有行为并手动删除它们?
我会定期向 UIDynamicAnimator 添加一个 UIView,它有自己的一些行为。但是当我从它的超级视图中删除 UIView 时(当它离开屏幕时),UIDynamicAnimator 仍然将 UIView 的行为保留在其“行为”属性中。
我的问题是,究竟什么是处理 UIDynamicAnimator 中行为的最佳方法?
在从视图层次结构中删除 UIView 之前,我是否必须手动跟踪与该 UIView 相关的所有行为并手动删除它们?
[myBehavior removeItem:item]
item
如果不是 的一部分,则不会引发异常myBehavior
,因此您可以做的是拥有一个通用removeView
方法,该方法从可能与其相关的所有行为中删除视图,例如:
- (void) removeView: (UIView *) view{
[_gravity removeItem: view];
[_collisions removeItem:view];
[_otherBehavior removeItem:view];
//and et cetra for all of your behaviors
[self.view removeItem: view];
}
每当您需要删除视图时都可以调用它。即使,比如说,视图不是_otherBehavior
这个方法的一部分,仍然会正确地删除视图。