¿Cómo puedo voltear y ampliar un UIView al mismo tiempo que la tienda de aplicaciones iOS 7 iPad?

El iPad iOS 7 App Store tiene una animación bastante buena para cuando haces clic en el ícono de una aplicación (de la lista destacada cuando el ícono es más pequeño, no un resultado de búsqueda). Aquí hay una foto de ella en acción:

Básicamente, el icono cambia de tamaño y se expande al mismo tiempo.

Hay un degradado detrás y la vista de contenido es más pequeña.

Hasta ahora, tengo una configuración de transición de VC personalizada y la parte de ampliación funciona bien, pero no puedo hacer que el flip to jive. ¿Cómo puedo imitar la animación de la tienda de aplicaciones?

Aquí está el código que tengo hasta ahora:

- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext {
UIView *inView = [transitionContext containerView];
UIViewController *fromVC = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
UIViewController *toVC = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
UIView *fromView = [fromVC view];
UIView *toView = [toVC view];
toView.frame = [transitionContext finalFrameForViewController:toVC];

// Take a snapshot of the new view being presented
UIGraphicsBeginImageContextWithOptions(toView.bounds.size, NO, 0);
CGContextRef ctx = UIGraphicsGetCurrentContext();
[fromView.layer renderInContext:ctx];
UIImage *snapshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

// Add the snapshot view and animate its appearance
UIImageView *intermediateView = [[UIImageView alloc] initWithImage:snapshot];
[inView addSubview:intermediateView];
[self calculateSourceRectInView:inView];
intermediateView.frame = self.sourceRect;

[UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{
    intermediateView.layer.transform = CATransform3DMakeRotation(-1.0 * -M_PI_2, 0.0, 1.0, 0.0);
    intermediateView.frame = toView.frame;
} completion:^(BOOL finished) {
    [intermediateView removeFromSuperview];

    if ([transitionContext transitionWasCancelled]) {
        [transitionContext completeTransition:NO];
    } else {
        [inView addSubview:toView];
        [fromView removeFromSuperview];
        [transitionContext completeTransition:YES];

        // Now this is a pushed view, we allow interactive
        // transitioning back to the parent view.
        self.interactiveTransition = [EBInteractiveZoomTransition new];
        [self.interactiveTransition wireToViewController:toVC];
    }
}];
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta