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

1、环境

  • iOS 13:iOS 13 Beta8
  • Xcode:Xcode 11.0 Beta
  • OS:macOS Catalina 10.15 Beta

2、问题现象

  • 描述:present后没有铺满全屏
  • 如下图所示:


    iOS 13[beta] presentViewController 默认样式的变化_第1张图片
    image.png

3、问题原因

  • 在iOS 13之前,我们模态展示的视图默认是全屏的UIModalPresentationFullScreen,而在iOS13中,默认的样式变成了UIModalPresentationAutomatic
  • iOS 13UIModalPresentationStyle是新增加的一个类型。
    • 设置此值时,大部分是UIModalPresentationPageSheet,但是也有的不一样
    • 验证结果:
      • UISearchController和 UIAlertController非UIModalPresentationPageSheet
      • 其余的视图控制器均为 UIModalPresentationPageSheet 的展示样式
    UIModalPresentationAutomatic API_AVAILABLE(ios(13.0)) = -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.

4、解决方法

  • preset的时候设置一下modalPresentationStyle为UIModalPresentationFullScreen
    UIViewController *mainController = [[UIViewController alloc] init];
    mainController.modalPresentationStyle = UIModalPresentationFullScreen;
    [self presentViewController:mainController animated:YES completion:nil];

5、其他iOS13的改动

  • 私有API KVC崩溃:iOS 13 Crash 处理
  • 欢迎补充

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