iOS 7 Custom Presence Transition con UINavigationController

Estoy usando la transición personalizada de iOS 7 para presentar un UINavigationController. pero hay un problema. mientras que su animation, el tamaño de la barra de navigation es de solo 44 puntos. luego, después de la animation, los controlleres de navigation descubrieron que hay una barra de estado, por lo que se agregaron 20 puntos para la barra de estado.

mi pregunta es, ¿es posible establecer la barra de navigation a 64 puntos cuando está animando, por lo que ya no cambia cuando se hace animation?

por favor véalo aquí para get más detalles Transiciones personalizadas de vista

Este es mi código de animation personalizado:

- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext{ UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; CGRect finalFrame = [transitionContext finalFrameForViewController:toViewController]; UIView *containerView = [transitionContext containerView]; CGRect screenBounds = [[UIScreen mainScreen] bounds]; toViewController.view.frame = CGRectOffset(finalFrame, 0, screenBounds.size.height); [containerView addSubview:toViewController.view]; NSTimeInterval duration = [self transitionDuration:transitionContext]; [UIView animateWithDuration:duration delay:0.0 usingSpringWithDamping:0.6 initialSpringVelocity:0.0 options:UIViewAnimationOptionCurveLinear animations:^{ toViewController.view.frame = finalFrame; } completion:^(BOOL finished) { [transitionContext completeTransition:YES]; }]; } 

ACTUALIZACIÓN: alguien solucionó este problema. pero bastante hacky. agregue este código después de agregar aViewController.view a containerView.

 if ([toViewController isKindOfClass:[UINavigationController class]]) { UINavigationController* navigationController = (UINavigationController*) toViewController; UINavigationBar* bar = navigationController.navigationBar; CGRect frame = bar.frame; bar.frame = CGRectMake(frame.origin.x, frame.origin.y + 20.0f, frame.size.width, frame.size.height); } 

¿Hay una mejor manera de hacerlo?

Tuve el mismo problema y resolví añadir el contenedor toViewController antes de configurar este marco.

Invierta las líneas de la siguiente manera:

 [containerView addSubview:toViewController.view]; toViewController.view.frame = CGRectOffset(finalFrame, 0, screenBounds.size.height);