¿Cómo actualizo el estilo de la barra de estado como parte de una transición personalizada?

Estoy usando el iOS 7UIviewControllerAnimatedTransitioning protocolo para presentar un modalViewController con una animación personalizada La animación funciona correctamente, sin embargo, quiero la nueva presentaciónViewController tener un estilo de barra de estado diferente al VC que se presenta.

Lo que estoy viendo es que-(UIStatusBarStyle)preferredStatusBarStyle se llama en la PRESENTACIÓNViewController (varias veces de hecho) y nunca en el recién presentadoViewController. Si elimino la animación personalizada, todo con la barra de estado funciona como esperaba.

¿Hay algo especial que deba hacer en mi función animateTransition para actualizar el controlador de vista raíz o algo así? He intentado configurar manualmente la barra de estado con[UIApplication sharedApplication] setStatusBarStyle pero no funciona (creo que porque estoy usando el estilo de barra de estado basado en el controlador de vista ios 7).

Este es mi código para animateTransition:

- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
{
    UICollectionViewCell *activeCell;
    if ([self.collectionView.visibleCells containsObject:self.cellForActiveIdeaVC]) {
        activeCell = self.cellForActiveIdeaVC;
    }

    UIView *container = transitionContext.containerView;
    UIViewController *fromVC = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
    UIViewController *toVC = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
    UIView *fromView = fromVC.view;
    UIView *toView = toVC.view;

    CGRect beginFrame;
    if (activeCell) {
        beginFrame = [container convertRect:activeCell.bounds fromView:activeCell];
    } else {
        beginFrame = CGRectMake(container.width / 2, container.height / 2, 0, 0);
    }

    CGRect endFrame = [transitionContext initialFrameForViewController:fromVC];

    UIView *move = nil;
    if (toVC.isBeingPresented) {
        toView.frame = endFrame;
        move = [toView snapshotViewAfterScreenUpdates:YES];
        move.frame = beginFrame;
    } else {
        if (activeCell) {
            move = [activeCell snapshotViewAfterScreenUpdates:YES];
        } else {
            move = [fromView snapshotViewAfterScreenUpdates:YES];
        }
        move.frame = fromView.frame;
        [fromView removeFromSuperview];
    }
    [container addSubview:move];

    [UIView animateWithDuration:.5
                          delay:0
         usingSpringWithDamping:700
          initialSpringVelocity:15
                        options:0
                     animations:^{
                         move.frame = toVC.isBeingPresented ?  endFrame : beginFrame;
                     }
                     completion:^(BOOL finished) {
                         [move removeFromSuperview];

                         if (toVC.isBeingPresented) {
                             toView.frame = endFrame;
                             [container addSubview:toView];
                         } else {
                             if (self.cellForActiveIdeaVC) {
                                 self.cellForActiveIdeaVC = nil;
                             }
                         }

                         [transitionContext completeTransition:YES];
                     }];
}

Cualquier puntero muy apreciado!

Respuestas a la pregunta(2)

Su respuesta a la pregunta