当使用3D Touch Peek& amp;时,以模态方式呈现提交视图控制器而不是推送流行的

时间:2016-01-04 04:17:06

标签: ios swift ios9 3dtouch

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

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

如何更改默认行为,以便在原始视图控制器嵌入导航控制器内时,以全屏模式呈现提交视图控制器而不是将其推入堆栈?

我在modalPresentationStyle中配置提交视图控制器时,尝试将.OverFullScreen设置为previewingContext:commitViewController:。这似乎没有任何区别。

目前的行为是一个问题,原因如下:
- 我出现在整个屏幕上,以便底层的视图控制器仍然可见在下面,模糊了。当它被推动时,这种效果无法实现。
- 我使用UIViewControllerTransitioningDelegate使用自定义转换呈现全屏照片,并且它也会在解除时转换。在推送后解除此功能时,它仅执行默认的流行动画而不是我的自定义动画。

1 个答案:

答案 0 :(得分:8)

想出来!只需将modalPresentationStyle设置为.OverFullScreen,非常重要的是,不要在showViewController中调用previewingContext:commitViewController:,而是致电presentViewController。简单。不敢相信我在发帖之前没有看到。 :)