Pasek nawigacji jest dostosowywany po wywołaniu completeTransition: w niestandardowym przejściu

Moim celem jest zapewnienie przejścia modalnego z zoomu dla użytkownika z widoku podobnego do powiększania ikon trampoliny podczas uruchamiania aplikacji.

Prezentowany kontroler widoku powiększa się prawidłowo, ale pasek nawigacji ma niewłaściwą pozycję pod paskiem stanu. Ta pozycja zostanie poprawiona po wywołaniu [transitionContext completeTransition: finished] ;. Jak mogę to poprawić od początku przejścia?

To jest nagranie ekranu błędu:http://youtu.be/7LKU4lzb-uw (usterka jest w szóstej sekundzie nagrania)

Kod UIViewControllerAnimatedTransitioning:

- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
{
    UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
    UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
    UIView *container = [transitionContext containerView];

    CGPoint viewCenter = self.view.center;
    CGSize viewSize = self.view.frame.size;
    CGSize controllerSize = toViewController.view.frame.size;

    CGFloat controllerFromX = viewCenter.x - (controllerSize.width / 2);
    CGFloat controllerFromY = viewCenter.y - (controllerSize.height / 2);

    CGAffineTransform transform = CGAffineTransformMakeTranslation(controllerFromX, controllerFromY);
    transform = CGAffineTransformScale(transform, viewSize.width / controllerSize.width, viewSize.height / controllerSize.height);

    if (self.reverse) {
        [container insertSubview:toViewController.view belowSubview:fromViewController.view];
    } else {
        toViewController.view.transform = transform;
        [container addSubview:toViewController.view];
    }

    [UIView animateKeyframesWithDuration:ZoomTransitioningDuration 
                                   delay:0 
                                 options:0 
                              animations:^{
                if (self.reverse) {
                    fromViewController.view.alpha = 0.0f;
                    fromViewController.view.transform = transform;
                } else {
                    toViewController.view.transform = CGAffineTransformIdentity;
                }
        } 
                              completion:^(BOOL finished) {
                [transitionContext completeTransition:finished];
        }];
}

questionAnswers(4)

yourAnswerToTheQuestion