I've got a custom UIViewController transition -- in iOS7, it works perfectly fine.
However, when run on iOS 8, I'm experiencing issues. Specifically, when the presented view controller is dismissed, the original view controller's view disappears entirely - leaving me with a completely blank screen. Here is my code:
@implementation DDCardTransition
- (NSTimeInterval)transitionDuration:(id <UIViewControllerContextTransitioning>)transitionContext {
    return 0.5f;
}
- (void)animateTransition:(id <UIViewControllerContextTransitioning>)transitionContext {
    UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
    UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
    CGRect endFrame = self.destinationFrame;
    if (self.presenting) {
        fromViewController.view.userInteractionEnabled = NO;
        toViewController.view.layer.cornerRadius = 6.0f;
        UIView *tintAdjustmentView = [UIView new];
        tintAdjustmentView.frame = fromViewController.view.frame;
        tintAdjustmentView.backgroundColor = [UIColor blackColor];
        tintAdjustmentView.alpha = 0.f;
        [transitionContext.containerView addSubview:fromViewController.view];
        [transitionContext.containerView addSubview:tintAdjustmentView];
        [transitionContext.containerView addSubview:toViewController.view];
        CGRect startFrame = endFrame;
        startFrame.origin.y += [UIScreen mainScreen].bounds.size.height;
        toViewController.view.frame = startFrame;
        [CATransaction begin];
        [CATransaction setCompletionBlock:^{
            [transitionContext completeTransition:YES];
        }];
        CABasicAnimation *frameAnimation = [CABasicAnimation animationWithKeyPath:@"position"];
        frameAnimation.timingFunction = [CAMediaTimingFunction functionWithControlPoints:0.1f :0.8f :0.0 :1.0];
        frameAnimation.duration = [self transitionDuration:transitionContext];
        frameAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(CGRectGetMidX(startFrame), CGRectGetMidY(startFrame))];
        frameAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(CGRectGetMidX(endFrame), CGRectGetMidY(endFrame))];
        toViewController.view.layer.position = [frameAnimation.toValue CGPointValue];
        [toViewController.view.layer addAnimation:frameAnimation forKey:@"position"];
        CABasicAnimation *opacityAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];
        opacityAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
        opacityAnimation.duration = 0.3f;
        opacityAnimation.fromValue = @(0.f);
        opacityAnimation.toValue = @(0.5f);
        tintAdjustmentView.layer.opacity = [opacityAnimation.toValue floatValue];
        [tintAdjustmentView.layer addAnimation:opacityAnimation forKey:@"opacity"];
        [CATransaction commit];
    }
    else {
        toViewController.view.userInteractionEnabled = YES;
        UIView *tintAdjustmentView = [UIView new];
        tintAdjustmentView.frame = toViewController.view.frame;
        tintAdjustmentView.backgroundColor = [UIColor blackColor];
        tintAdjustmentView.alpha = 0.5f;
        [transitionContext.containerView addSubview:toViewController.view];
        [transitionContext.containerView addSubview:tintAdjustmentView];
        [transitionContext.containerView addSubview:fromViewController.view];
        endFrame.origin.y += [UIScreen mainScreen].bounds.size.height;
        [UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{
            fromViewController.view.frame = endFrame;
            tintAdjustmentView.alpha = 0.f;
        } completion:^(BOOL finished) {
            [transitionContext completeTransition:YES];
        }];
    }
}
@end
Any idea why this no longer works in iOS8?
Thanks!
 
     
    