如何在弹出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
相关产品推荐
相关产品推荐

