在iOS 13中,模态视图控制器在呈现时有一个新的行为。

现在它不是全屏默认情况下,当我向下滑动时,应用会自动解除视图控制器。

我怎么能防止这种行为,并回到旧的全屏模态vc?

谢谢


当前回答

这很容易做到 打开你的故事板作为源代码,搜索kind="presentation",在所有带有kind= presentation的segue标签中添加一个额外的属性modalPresentationStyle="fullScreen"

其他回答

最新版本为iOS 13和Swift 5.x

let vc = ViewController(nibName: "ViewController", bundle: nil)

vc。modalPresentationStyle = .fullScreen

self.present(vc, animated: true, completion: nil)

设置导航控制器。modalPresentationStyle到。fullscreen已经重复了一千多次了,但让我给你们展示另一个阻止器,它会导致UIViewController / UINavigationController没有在全屏显示,即使所有的属性都设置正确。

对我来说,罪魁祸首就藏在这条线里

navigationController?.presentationController?.delegate = self

显然,当设置UIAdaptivePresentationControllerDelegate时,你需要在可选的delegate方法中指定表示样式

    public func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
        presentationStyle
    }
let Obj = MtViewController()
Obj.modalPresentationStyle = .overFullScreen
self.present(Obj, animated: true, completion: nil)

//如果你想禁用滑动来消除它,添加行

Obj.isModalInPresentation = true

查看苹果文档获取更多信息。

正如在2019年全球开发者大会上发布的平台国情咨文中所述,苹果在iOS 13中引入了新的默认卡显示方式。为了强制全屏,你必须明确地指定它:

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

这里有一个简单的解决方案,无需编写任何代码。

在故事板中选择视图控制器 选择属性检查器 按照下图将显示“自动”设置为“全屏”

这一变化使iPad应用程序的行为符合预期,否则新屏幕将以弹出窗口的形式显示在屏幕中央。