iOS 7自定义推送过渡到透明视图控制器,保持视图控制器的视图在下方可见

coh*_*n72 4 objective-c uiviewcontroller uikit uinavigationcontroller uimodalpresentationstyle

我正在创建一个自定义推送转换(UINavigationController)从一个视图控制器到一个视图控制器,它的视图是透明的模糊.

我希望"from"视图控制器在新推的视图控制器下保持可见.

我知道如果以模态方式(使用modalPresentationStyle = UIModalPresentationCustom)呈现新的视图控制器,我可以实现这种效果,但有没有办法为导航控制器执行此操作?

我面临的问题是,在转换发生后,视图控制器的视图将从容器中删除.

lia*_*ols 6

使用新的iOS 7转换API,您无法在toViewController.view下保留fromViewController.view,因为一旦动画完成,就会私有地管理containerView.

你能做什么却是这样的......

UIView *containerView = [transitionContext containerView];

UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];

UIView *snapshotView = [fromViewController.view snapshotViewAfterScreenUpdates:NO];

[toViewController.view addSubview:snapshotView];
[toViewController.view sendSubviewToBack:snapshotView];
Run Code Online (Sandbox Code Playgroud)

我不太确定最后两行的效果如何(将快照发送到后面)但您可以使用自定义UIViewController子类来处理快照并确保它位于其他内容的后面.


重新阅读后..我有一种感觉,你想要实现某种形式的模态而不是全屏幕演示...我的上述解决方案将要求toViewController全屏...也许你可以添加一个子视图控制器实际上包含模态内容的toViewController?