4

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

我希望“来自”视图控制器在新推送的视图控制器下保持可见。

我知道如果以模态方式(使用modalPresentationStyle = UIModalPresentationCustom)呈现新的视图控制器,我可以达到这种效果,但是有没有办法为导航控制器做到这一点?

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

4

1 回答 1

6

使用新的 iOS 7 过渡 API,您不能将 fromViewController.view 保留在 toViewController.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];

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


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

于 2014-02-19T13:06:55.353 回答