Обработка UIDynamicBehaviors при удалении соответствующего UIView

Периодически я добавляю UIView в UIDynamicAnimator, который имеет некоторые собственные поведения. Но когда я удаляю UIView из его суперпредставления (когда он падает за пределы экрана), UIDynamicAnimator все еще сохраняет поведение UIView в своем свойстве "поведения".

Мой вопрос: каков наилучший подход к обработке поведения в UIDynamicAnimator?

Нужно ли вручную отслеживать все поведения, относящиеся к этому UIView, и вручную удалять их перед удалением UIView из иерархии представления?

1 ответ

[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 этот метод все равно правильно удалит представление.

Другие вопросы по тегам