4

我有一个应用程序,允许用户查看UICollectionViewController嵌入在UINavigationController. 当用户点击查看照片时,我会以模态方式在全屏(不是默认的全屏)上呈现一个新的视图控制器。我现在想实现一个 3D Touch 提交(弹出)视图控制器,使其完全按照用户点击照片时的样子。问题是,当弹出全屏照片时,iOS 在幕后将这个视图控制器推送到堆栈上 - 导航栏仍然可见,并且它添加了一个返回按钮以返回到前一个屏幕。我不希望这样,我希望以模态方式呈现提交视图控制器。

我注意到如果我删除导航控制器,iOS 将以模态方式呈现提交视图控制器,而不是推送。但我无法删除我的导航控制器,它仍然只是全屏显示,而不是全屏显示。

当原始视图控制器嵌入导航控制器时,如何更改默认行为以便提交视图控制器以模态方式显示在全屏而不是推送到堆栈上?

当我modalPresentationStyle在. 这似乎没有任何区别。.OverFullScreenpreviewingContext:commitViewController:

当前的行为是一个问题,原因有以下几个:
- 我呈现在全屏上,因此底层视图控制器仍然在下面可见,模糊了。当它被推动时,无法达到此效果。
- 我使用自定义转换呈现全屏照片UIViewControllerTransitioningDelegate,并且它也会在关闭时转换。在推送后关闭它时,它只执行默认的弹出动画而不是我的自定义动画。

4

1 回答 1

8

弄清楚了!只需将 设置modalPresentationStyle.OverFullScreen,而且非常重要的是,不要调用showViewControllerin previewingContext:commitViewController:,而是调用presentViewController。简单的。不敢相信我在发帖之前没有看到。:)

于 2016-01-04T04:41:36.330 回答