iOS 开发:为啥 self.navigationController.navigationBar.frame.size.height 返回零?
Posted
技术标签:
【中文标题】iOS 开发:为啥 self.navigationController.navigationBar.frame.size.height 返回零?【英文标题】:iOS Dev: Why does self.navigationController.navigationBar.frame.size.height return zero?iOS 开发:为什么 self.navigationController.navigationBar.frame.size.height 返回零? 【发布时间】:2012-09-21 13:54:47 【问题描述】:我有一个带有导航栏的模式弹出视图,当我尝试使用语句从当前加载的视图访问该导航栏的高度时...
self.navigationController.navigationBar.frame.size.height;
...它返回 0。为什么会这样?
非常感谢您的智慧!
【问题讨论】:
你使用什么格式参数(即%@, %llu) 【参考方案1】:这可能是因为您在表达式中使用的对象之一是nil
。
例如,这可能是self.navigationController
本身。也许您误解了视图层次结构? (尝试NSLog(@"%@", self.navigationController);
检查是否为nil
并确定)
【讨论】:
【参考方案2】:不知道为什么,如果你什么都没做,导航栏的高度总是 44 像素
【讨论】:
这不是真的。在 iPhone 上的 Landscape more 中,NavigationBar 的高度与 Portrait 模式下的高度不同。 是的,很抱歉横向是 32 此外,在代码中使用幻数是不好的做法,比如硬写值。我们已经看到,Apple 可以更改操作系统和手机本身的内容(例如,在他们的代码中硬写480
广告屏幕高度的每个人今天都搞砸了,而使用 view.window.screen.applicationFrame.size.height
仍然在任何地方返回正确的值) ,因此无法保证 Apple 不会在未来的 ios 版本中更改 NavBar 的高度。因此,像 OP 一样尝试获取值而不是对值进行硬编码是一种更好的做法。
:) 好的,你是对的......但如果你想改变外观,知道这些值仍然很好:)(这里不相关,但仍然!)以上是关于iOS 开发:为啥 self.navigationController.navigationBar.frame.size.height 返回零?的主要内容,如果未能解决你的问题,请参考以下文章
iOS 开发:为啥 self.navigationController.navigationBar.frame.size.height 返回零?