У меня есть настраиваемый анимированный переход UIViewController, и кажется, что в iOS есть ошибка, которая закручивает макет в альбомной ориентации. В основном методе анимации мне дается сочетание пейзажных и портретных представлений. (В портрете видны все портреты, поэтому проблем нет.)
- (void)animateTransition:(id <UIViewControllerContextTransitioning>)transitionContext;
{
UIViewController* toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
UIViewController* fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
UIView *containerView = [transitionContext containerView];
// fromViewController.view => landscape, transform
// toViewController.view => portrait, transform
// containerView => portrait, no transform
[containerView addSubview:toViewController.view];
// ...animation... //
}
Я знаю, что свойство frame
не является надежным, когда представление имеет преобразование, поэтому я предполагаю, что это корень проблемы. В ландшафтном режиме просмотр/просмотр viewControllers имеет 90 градусов по часовой стрелке [0 -1 1 0]. Я пробовал использовать границы/центр для определения размера и расположения представления, а также удаления преобразования, а затем повторного применения его, но UIKit борется со мной и настаивает на отображении вида в виде портрета. Досадно!
На скриншоте темно-серый - это фон UIWindow, а красный - добавленный контроллер модального представления, который должен охватывать весь экран.
Кто-нибудь нашел обходное решение?