我有一个应用程序,允许用户查看UICollectionViewController
嵌入在其中的照片UINavigationController
.当用户点击查看照片时,我会在全屏模式下呈现一个新的视图控制器(不是默认的全屏).我现在想要实现一个3D Touch提交(弹出)视图控制器,使其与用户点击照片时完全一样.问题是,当弹出全屏幕照片时,幕后的iOS会将此视图控制器推到堆栈上 - 导航栏仍然可见,它会添加一个后退按钮以返回上一个屏幕.我不希望这样,我希望提交视图控制器以模态方式呈现.
我注意到如果我删除导航控制器,iOS将以模态方式呈现提交视图控制器而不是推送.但我无法删除我的导航控制器,它仍然只是全屏显示而不是全屏.
如何更改默认行为,以便在原始视图控制器嵌入导航控制器内时,提交视图控制器以模式方式显示在全屏上而不是压入堆栈?
我试图设置modalPresentationStyle
到.OverFullScreen
当我配置在提交的视图控制器previewingContext:commitViewController:
.这似乎没有任何区别.
目前的行为是一个问题,原因有以下几点:
- 我出现在整个屏幕上,以便底层的视图控制器仍在下方可见,模糊不清.当它被推动时,这种效果无法实现.
- 我使用自定义过渡呈现全屏照片UIViewControllerTransitioningDelegate
,并且它也会在关闭时转换.在推送后解除此操作时,它仅执行默认的弹出动画而不是我的自定义动画.
弄清楚了!只需设置modalPresentationStyle
到.OverFullScreen
,而且非常重要的,而不是调用showViewController
中previewingContext:commitViewController:
,调用presentViewController
.简单.不敢相信我在发帖之前没有看到.:)