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

点击按钮跳转时如何设置通过segue弹出的ViewController的高度

自定义Segue跳转后ViewController高度的实现方法

你目前使用Segue关联跳转的场景,可以通过以下两种方案实现RegisterViewController的自定义高度配置:


方案一:在跳转源控制器(LoginViewController)中通过Segue生命周期配置

  • 首先打开Storyboard,选中LoginViewController到RegisterViewController的Segue连线,在右侧属性检查器中为Segue设置唯一标识符,比如toRegister
    segue设置界面
  • 在LoginViewController中实现prepare(for:sender:)方法,对跳转目标控制器做高度配置,适配全iOS版本的代码如下:
class LoginViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        guard segue.identifier == "toRegister",
              let registerVC = segue.destination as? RegisterViewController else { return }
        // iOS15及以上使用系统Sheet配置,支持更多自定义效果
        if let sheetController = registerVC.sheetPresentationController {
            // 自定义高度可直接修改数值,比如改为300、400,也可以按屏幕高度比例计算
            sheetController.detents = [.custom { context in
                // 示例:设置为屏幕高度的40%
                return context.maximumDetentValue * 0.4
            }]
            // 可选配置:显示顶部拖拽小抓条
            sheetController.prefersGrabberVisible = true
        } else {
            // iOS15以下适配方案
            registerVC.modalPresentationStyle = .formSheet
            registerVC.preferredContentSize = CGSize(width: UIScreen.main.bounds.width, height: 300)
        }
    }
}

方案二:直接在RegisterViewController内部配置固定高度

如果要求所有场景下跳转进入RegisterViewController都使用固定高度,可以直接在RegisterViewController内部配置:

class RegisterViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        if let sheetController = self.sheetPresentationController {
            sheetController.detents = [.custom { _ in 300 }]
        } else {
            self.modalPresentationStyle = .formSheet
            self.preferredContentSize = CGSize(width: view.frame.width, height: 300)
        }
    }
}

配置完成后弹出的RegisterViewController就会按照你设置的高度展示,不会出现高度过高的问题:
弹出高度过高的原效果图


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:57:03