我刚刚使用默认的Master Details模板创建了一个简单的iOS 7应用程序。
在MasterViewController.m
,viewDidAppear
方法中,我登录了
self.navigationController.navigationBar.frame.size.height
self.navigationController.navigationBar.frame.origin.y
并因此收到44和20。这看起来很奇怪,因为根据我的阅读,iOS 7中的导航栏应该是64点高度并从0点开始,以便它位于状态栏下方。我读到的是
因为状态栏是透明的,所以它后面的视图显示 通过
2)Using Background Image in Navigation Bar
如果您的应用使用自定义图片作为条形图的背景,那么您将会这样做 需要提供一个“更高”的图像,使其向后延伸 状态栏。导航栏的高度从44点(88 像素)到64点(128像素)。
答案 0 :(得分:90)
导航栏和状态栏之间存在差异。令人困惑的部分是它看起来像是屏幕顶部的一个实体特征,但这些区域实际上可以分成两个不同的视图;状态栏和导航栏。状态栏从y = 0到y = 20点,导航栏从y = 20到y = 64点。因此导航栏(页面标题和导航按钮所在的位置)的高度为44点,但状态栏和导航栏的总高度为64点。
这是一个很好的资源,可以解决这个问题以及iOS7中的一些其他大小调整特性: http://ivomynttinen.com/blog/the-ios-7-design-cheat-sheet/
答案 1 :(得分:8)
我从“编程iOS 7”一书中找到了这个答案,“条形位置和条形指标”一节
如果是导航栏或工具栏 - 或搜索栏(前面已讨论过) 本章) - 是占据屏幕的顶部,iOS 7 惯例是它的高度应增加到不足 透明状态栏。为了实现这一点,iOS 7引入了 酒吧位置的概念。
<强> UIBarPositionTopAttached 强>
指定栏位于屏幕顶部及其位置 包含视图。有这个位置的酒吧绘制他们的背景 向上扩展,允许他们的背景内容显示出来 状态栏。适用于iOS 7.0及更高版本。