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

如何获取iOS模态弹出视图(Modal Present View)的真实高度?

获取模态弹出视图的真实高度

在viewDidLoad中打印模态视图的bounds得到全屏尺寸,是因为这个阶段视图仅完成加载,还未完成自动布局计算和实际显示布局。默认的模态视图(如sheet样式)的真实尺寸是在视图层级完成布局后才会确定的。

方法1:在viewDidLayoutSubviews中获取

viewDidLayoutSubviews会在视图完成布局(包括尺寸调整)后调用,这里能拿到模态视图的真实显示尺寸:

import UIKit

class TestVC: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .gray
    }
    
    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        // 这里能拿到真实的模态视图bounds
        print("modal view real bounds is \(view.bounds)")
    }
}

方法2:在viewDidAppear中获取

如果只需要在视图显示后获取一次尺寸,也可以在viewDidAppear中获取:

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    print("modal view real bounds in appear: \(view.bounds)")
}

补充说明

  • 如果是自定义模态展示样式(如修改modalPresentationStyle),可以通过设置preferredContentSize自定义尺寸,同时也能通过该属性获取预设的尺寸。
  • viewDidLayoutSubviews会在视图布局发生变化时多次调用(比如屏幕旋转、子视图调整),如果只需要一次结果,可以添加判断逻辑避免重复执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 16:03:34