0

我会定期向 UIDynamicAnimator 添加一个 UIView,它有自己的一些行为。但是当我从它的超级视图中删除 UIView 时(当它离开屏幕时),UIDynamicAnimator 仍然将 UIView 的行为保留在其“行为”属性中。

我的问题是,究竟什么是处理 UIDynamicAnimator 中行为的最佳方法?

在从视图层次结构中删除 UIView 之前,我是否必须手动跟踪与该 UIView 相关的所有行为并手动删除它们?

4

1 回答 1

0

[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这个方法的一部分,仍然会正确地删除视图。

于 2014-12-04T02:10:52.140 回答