Ошибка перехода пользовательского Viewcontroller при вращении устройства

Я пытаюсь настроить навигационный контроллер push и pop перехода. Это в основном альфа анимация происходит. Вот код Это работает очень круто, пока я не поверну iPad после презентации, и когда я отклоню презентацию viewController, в нем останется containerView. Я имею в виду, что [transitionContext containerView] никогда не вращается вместе с устройством и становится видимым после закрытия текущего контроллера представления.

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

    self.transitionContext = transitionContext;
    if(self.isReverse) {
        [self hide:transitionContext];
    } else {
        [self show:transitionContext];
    }
}

#pragma mark - Helper Method
- (void)show:(id<UIViewControllerContextTransitioning>)transitionContext {

    UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
    UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];;

    toViewController.view.frame = fromViewController.view.frame;
    [[transitionContext containerView] addSubview:toViewController.view];
    [transitionContext containerView].backgroundColor = [UIColor redColor];
    toViewController.view.alpha = 0.0;

    [UIView animateWithDuration:[self transitionDuration:transitionContext]
                          delay:0.0
                        options:UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionCurveEaseInOut
                     animations:^{
                         toViewController.view.alpha = 1.0;
                     }
                     completion:^(BOOL finished) {
                         [transitionContext completeTransition:![transitionContext transitionWasCancelled]];
                     }];
}

- (void)hide:(id<UIViewControllerContextTransitioning>)transitionContext {

    UIViewController *toViewController   = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
    UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];

    [[transitionContext containerView] insertSubview:toViewController.view belowSubview:fromViewController.view];

    fromViewController.view.alpha = 1.0;
    [UIView animateWithDuration:[self transitionDuration:transitionContext]
                          delay:0.0
                        options:UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionCurveEaseInOut
                     animations:^{
                         fromViewController.view.alpha = 0.0;
                     } completion:^(BOOL finished) {
                         [transitionContext completeTransition:![transitionContext transitionWasCancelled]];
                     }];
}

0 ответов

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