Swift - 使用导航栏和标签栏获取 viewController 的大小

Posted

技术标签:

【中文标题】Swift - 使用导航栏和标签栏获取 viewController 的大小【英文标题】:Swift - get size of viewController with navigation bar and tab bar 【发布时间】:2017-04-04 19:01:22 【问题描述】:

我的 viewController 有导航栏和标签栏。 在减去导航和标签栏的大小后,我需要计算出可用空间。 我试过了:

let height = UIScreen.main.bounds.height - self.navigationController!.navigationBar.frame.size.height - self.tabBarController!.tabBar.frame.size.height

但它不起作用...... 我是不是做错了什么?

编辑: 抱歉缺少信息。 我想在导航和标签栏之间嵌入 UIScroll 视图。方程返回的高度大于可用空间。

titleView = UIScrollView(frame: CGRect(x: 0, y:0, width: titleWidth, height: height))

titleView 超越“tabbar.y”

【问题讨论】:

你得到了什么结果?你在哪里调用这个代码? 抱歉,我添加了更多信息。 【参考方案1】:

解决方案是同时减去 statusBar 的高度。妈的。。

【讨论】:

【参考方案2】:

获取此信息的最简单方法是使用布局指南。

let viewHeight = view.frame.height - (topLayoutGuide.length + bottomLayoutGuide.length)

但是,我认为您最好使用 Autolayout 来管理 scrollView 的高度,而不是直接设置。

【讨论】:

以上是关于Swift - 使用导航栏和标签栏获取 viewController 的大小的主要内容,如果未能解决你的问题,请参考以下文章

使用标签栏和导航实例化深度视图控制器

Xcode 13 - swift OS 15 中的导航栏和状态栏文本颜色变化

状态栏、导航栏、PopupWindow的使用

swift 需求: 导航栏和HeaderView 使用一个背景图片。

iOS 获取状态栏、导航栏、tabBar高度

Swift-以编程方式导航控制器和标签栏控制器