iOS 13[beta] presentViewController 默认样式的变化

本文对应系统版本为 iOS 13 - beta

在iOS 13之前,我们模态展示的视图默认是全屏的,而在iOS13中,默认的样式变成了类iPhone上safari的分页样式:


image

在使用 模态视图(presentViewController:) 来跳转视图时系统提供了两个参数来简化跳转的设置,modalTransitionStylemodalPresentationStyle。前者为转场过渡的类型,后者为展示的样式,系统为两者都提供了多种可选样式。

展示的方式变了就看 modalPresentationStyle 的值,在iOS13前,该值默认为0,即 .fullScreen
而此时,在 iOS13 中变为了-2。

在 iOS13 中 modalPresentationStyle 的类型新增了以下类型:

UIModalPresentationAutomatic = -2

我们在官方文档中能看到该参数的如下描述:

Use this value when you want to use the system's recommended presentation style. For most view controllers, UIKit maps this style to the UIModalPresentationPageSheet style, but some system view controllers may map to a different style.

如果你想使用系统推荐的演示样式就使用此值,对于绝大部分视图控制器,UIKit将此值映射到UIModalPresentationPageSheet,但也有一些系统视图控制器会映射到不同样式

此处笔者做了一些测试,除了 “UISearchController” 和 “UIAlertController” 因为自身业务的特殊性不同外,其余的视图控制器均为 UIModalPresentationPageSheet 的展示样式。

就当前beta版本的改动,适配起来也很简单,手动指定一下原本的样式即可,具体方案根据项目具体情况而定。

具体到iOS13最终正式版时是否会发生变化也说不准,到时候再修正本文。
没准到时候 .automatic 的样式默认映射到 .fullScreen 也是有可能的。

那我只有自己灌的水自己亲手倒掉了

你可能感兴趣的:(iOS 13[beta] presentViewController 默认样式的变化)