You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在已模态弹出的ViewController B内部修改modalPresentationStyle为全屏

原因

modalPresentationStyle 属性仅在控制器被模态弹出之前配置才会生效,已经完成呈现的控制器修改该属性不会触发界面更新,所以你写的代码没有效果。

正确实现方案

如果需要保留当前控制器B的已有状态(比如用户已经输入的内容、页面操作进度等),可以先无动画关闭当前B,再重新以全屏样式弹出,用户不会感知到中间的关闭过程:

@IBAction func addBtnPressed(_ sender: UIButton) {
    guard let presentingVC = presentingViewController else { return }
    // 先无动画关闭当前已弹出的B
    dismiss(animated: false) { [weak self] in
        guard let self = self else { return }
        // 重新设置弹出样式为全屏
        self.modalPresentationStyle = .fullScreen
        // 可选:修改转场动画效果,默认是.coverVertical从下往上弹出
        self.modalTransitionStyle = .crossDissolve
        // 用弹出B的原控制器A,再次弹出B
        presentingVC.present(self, animated: true)
    }
}

可选方案

如果你不需要保留B的当前状态,也可以直接创建全新的B实例,设置全屏样式后由A弹出即可。

内容的提问来源于stack exchange,提问作者Palwandew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 02:36:02