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

iOS Xcode Segues开发:登录页跳转后全屏展示并禁用下拉返回手势

问题根因

iOS 13及以上版本系统对模态跳转的默认样式做了调整,默认采用UIModalPresentationStyle.pageSheet样式,该样式下页面不会占满全屏,同时自带下拉 dismiss手势,就是你当前遇到的可下拉返回登录页的场景。

适配方案

方案1:Storyboard Segue 可视化配置(适配你当前基于Segue开发的场景)

这是改动最小的方案,直接通过Xcode属性面板配置即可:

  • 打开项目的Storyboard文件,找到登录页到首页的Segue连线并选中
  • 打开右侧「Attributes Inspector(属性检查器)」面板,找到Presentation配置项
  • 将默认值Automatic/Page Sheet修改为Full Screen
  • 配置完成后重新运行项目即可,此时跳转的首页会全屏展示,且默认关闭下拉返回手势

Segue Presentation配置示例

方案2:代码动态配置(适配手动触发Segue或纯代码跳转的场景)

如果你需要通过代码控制跳转样式,可对应修改跳转逻辑:

Swift代码示例

// 手动跳转场景
let homeVC = HomeViewController()
homeVC.modalPresentationStyle = .fullScreen
present(homeVC, animated: true)

// prepareForSegue 中配置场景
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    guard segue.identifier == "你设置的Segue唯一ID" else { return }
    segue.destination.modalPresentationStyle = .fullScreen
}

Objective-C代码示例

// 手动跳转场景
HomeViewController *homeVC = [[HomeViewController alloc] init];
homeVC.modalPresentationStyle = UIModalPresentationFullScreen;
[self presentViewController:homeVC animated:YES completion:nil];

// prepareForSegue 中配置场景
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"你设置的Segue唯一ID"]) {
        segue.destinationViewController.modalPresentationStyle = UIModalPresentationFullScreen;
    }
}

补充场景适配

如果你后续有需求保留半高的pageSheet展示样式,仅禁用下拉返回手势,可添加以下配置:

// Swift
targetVC.isModalInPresentation = true
// Objective-C
targetVC.modalInPresentation = YES;

该配置不会修改页面展示样式,仅拦截下拉 dismiss手势,用户只能通过你自定义的返回按钮触发返回操作。


内容的提问来源于stack exchange,提问作者Mark A. Rupert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:36:04