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

如何在弹出pageSheet时保持presentingViewController全屏显示?

实现iOS全屏模态呈现(仿Apple Maps效果)

核心是你搞反了设置对象——要给被弹出的ViewController设置模态样式,而不是发起present的那个控制器,试试下面的步骤:

  • 给你要弹出的目标VC设置modalPresentationStyle为.overFullScreen
  • 不需要调整UISheetPresentationController的属性(因为sheet本身就是带栈式推挤的设计,要全屏覆盖就得放弃sheet的默认行为)

举个Swift代码示例:

let targetVC = YourModalViewController()
// 关键设置:给被弹出的VC设这个样式
targetVC.modalPresentationStyle = .overFullScreen
// 如果需要半透明背景让底层可见,就加这行,否则保持VC背景不透明即可覆盖全屏
// targetVC.view.backgroundColor = UIColor.black.withAlphaComponent(0.6)
present(targetVC, animated: true)

如果用Objective-C:

YourModalViewController *targetVC = [[YourModalViewController alloc] init];
targetVC.modalPresentationStyle = UIModalPresentationOverFullScreen;
[self presentViewController:targetVC animated:YES completion:nil];

原理:.overFullScreen会让弹出的VC覆盖在当前控制器之上,不会修改底层控制器的布局,自然就不会出现推挤效果,和Apple Maps里的模态呈现逻辑一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:52:03