【问题标题】:iOS 7 Custom push transitions to a transparent view controller, keeping from view controller's view visible beneathiOS 7 自定义推送过渡到透明视图控制器,保持视图控制器的视图在下方可见
【发布时间】:2014-02-19 12:32:52
【问题描述】:

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

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

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

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

【问题讨论】:

  • 我不确定系统默认有没有办法做到这一点。如果您希望它在下面保持可见,最好使用您自己的自定义代码。

标签: objective-c uiviewcontroller uinavigationcontroller uikit uimodalpresentationstyle


【解决方案1】:

使用新的 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?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 2011-06-26
    • 1970-01-01
    • 2016-10-22
    • 2010-12-11
    • 1970-01-01
    相关资源
    最近更新 更多