подпредставления оживляют, когда они не должны быть оживляющими - PullRequest
0 голосов
/ 21 июня 2019

У меня есть контроллер представления, у которого есть представление коллекции внутри него.Имеет логику для отображения в состоянии половины листа и в состоянии полного листа.Когда я перемещаюсь из состояния половины листа в состояние полного листа, возникает анимация, которая переводит нас из состояния половины листа в состояние полного листа.Во время этой анимации некоторые виды в ячейках моего собрания, которые находятся за пределами экрана, анимируются.Иерархия представлений: UICollectionView -> CustomUICollectionViewCell -> CustomUIView (для ячейки) -> (3 пользовательских представления, CustomLeftView, CustomMiddleView, CustomRightView).Все 3 пользовательских вида анимируются в свое положение, когда контроллер вида переходит из состояния половины листа в состояние полного листа.

Я подумал, что мог бы это исправить, используя функцию + (void)performWithoutAnimation:(void (^)(void))actionsWithoutAnimation; в подпредставлениях макета моего CustomUIView, так как три представления анимируются. Однако 3 пользовательских представления по-прежнему анимируются. Когда я переопределяю функцию layoutSubviews3 пользовательских вида, которые нужно обернуть в + (void)performWithoutAnimation:(void (^)(void))actionsWithoutAnimation;, которые не анимированы и вместо этого отображаются в полном размере, как я в идеале хочу.

Проблема двоякая:

  1. в том, что эти представления используются в других частях кодовой базы, и мне нужно проверить, чтобы убедиться, что никакое другое место не анимирует эти представления.
  2. кажется хакерским, что мне нужно было поместить это executeWithoutAnimation в реализацию этих пользовательских представлений, а не в мой CustomUIView.

Есть какие-нибудь идеи о том, как можно предотвратить появление этой анимации без перезаписи 3 пользовательских подпанелей layoutSubviews?

...