iOS13+Xcode11-iPhone的present modally转场的默认展示方式由fullScreen变为automatic的注意事项

2,393 阅读1分钟

在iOS13以及Xcode11中,viewcontroller的modalPresentationStyle属性由之前延续了很久的fullScreen方式变成了automatic(如下图):

据说是为了UI设计上的美观(配合刘海屏)以及交互上的方便(直接可用下滑手势关闭),但这也会导致一些遗留问题,比如苹果未曾更新相应的自定义转场动画的用法,继续使用之前的方法会导致黑屏等等。

所以如果在使用Xcode11开发时遇到设计或者动画上的bug的话,可以考虑强制把转场的展示方式变为fullScreen:

let vc = UIViewController()
vc.modalPresentationStyle = .fullScreen //或 .overFullScreen 
self.present(vc, animated: true, completion: nil)

ps:storyboard上变全屏操作:

选中跳转的segue(即下图中的箭头)

参考文档:

developer.apple.com/documentati…

注:

苹果经常更改默认设置,大家在iOS和Xcode版本更新后,遇到奇形怪状的问题不要慌,可能只是某个默认设置要改一下,一句代码的事情。