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