iOS 7中导航栏的高度是多少?

时间:2013-11-23 09:58:18

标签: ios7 height frame statusbar navigationbar

我刚刚使用默认的Master Details模板创建了一个简单的iOS 7应用程序。

MasterViewController.mviewDidAppear方法中,我登录了

self.navigationController.navigationBar.frame.size.height
self.navigationController.navigationBar.frame.origin.y

并因此收到44和20。这看起来很奇怪,因为根据我的阅读,iOS 7中的导航栏应该是64点高度并从0点开始,以便它位于状态栏下方。我读到的是

1)iOS 7 UI Transition Guide

  

因为状态栏是透明的,所以它后面的视图显示   通过

2)Using Background Image in Navigation Bar

  

如果您的应用使用自定义图片作为条形图的背景,那么您将会这样做   需要提供一个“更高”的图像,使其向后延伸   状态栏。导航栏的高度从44点(88   像素)到64点(128像素)。

2 个答案:

答案 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及更高版本。