iOS 13 present 页面的默认 style 变化

在 iOS 开发中,当我们要打开一个 UIViewController 时,通常有 push 或 present 两种方式;push 默认动画是从右向左滑进页面,可通过手势滑动返回,而 present 则是从下向上弹出,全屏覆盖,且无法通过手势关闭,一般是通过左上角导航栏按钮退出页面,如图 1 所示。

不过在 iOS 13 中,present 的默认动画发生了改变,UIViewController 的 modalPresentationStyle 属性默认值变为 UIModalPresentationAutomatic,即系统会自动取值,且通常情况下,默认取 UIModalPresentationPageSheet,此时页面会以抽屉样式滑出来(不会全屏覆盖),而且可以通过手势下滑关闭,如图 2 所示。

注:上述变化只在竖屏下有效,横屏模式下仍然和之前一样。

因此,在 iOS 13 中,我们如果想把 present 方式改回原来那种全屏覆盖且无法手势下滑关闭的 style,只需把被 present 的 VC 的 modalPresentationStyle 属性值设为 UIModalPresentationFullScreen 即可。

关于 present style 的更多取值,详见苹果文档:UIModalPresentationStyle