Почему UIKit перезагружает UIViewController UIView кадр во весь экран во время пользовательского перехода? - программирование

Почему UIKit перезагружает UIViewController UIView кадр во весь экран во время пользовательского перехода?

Я использую настраиваемый переход для сдвига экрана 2/3 экрана просмотра, когда вызывается - presentViewController:animated:completion: и отбрасывает его снова, когда вызывается dismissViewControllerAnimated:completion:.

Я также использую UIPercentDrivenInteractiveTransition, прикрепленный к UIScreenEdgePanGestureRecognizer, чтобы сместить контроллер вида.

Все работает хорошо, за исключением случаев, когда вы вызываете dismissViewControllerAnimated:completion:, перед:

- (void)animateTransition:(id <UIViewControllerContextTransitioning>)transitionContext

называется фреймом экрана со сдвигом экрана, установленным на:

(0 0; 320 568)

заставляя его мгновенно "мигать" перед запуском анимации, и он переходит с экрана 2/3 с экрана на полный экран.

Подклассифицируя UIView на контроллере представления, я могу установить точку прерывания в -setFrame, показывая метод:

[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:animation:]

вызывает -setFrame с помощью (0 0; 320 568).

Почему он это делает? Как я могу предотвратить его установку рамки перед началом анимации?

4b9b3361