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

onm*_*133 69 height frame statusbar navigationbar ios7

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

MasterViewController.m,viewDidAppear方法,我登录了

self.navigationController.navigationBar.frame.size.height
self.navigationController.navigationBar.frame.origin.y
Run Code Online (Sandbox Code Playgroud)

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

1)iOS 7 UI过渡指南

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

2)在导航栏中使用背景图像

如果您的应用使用自定义图像作为条形图的背景,则需要提供"更高"的图像,使其向上延伸到状态栏后面.导航栏的高度从44点(88像素)更改为64点(128像素).

pof*_*off 90

导航栏和状态栏之间存在差异.令人困惑的部分是它看起来像是屏幕顶部的一个实体特征,但这些区域实际上可以分成两个不同的视图; 状态栏和导航栏.状态栏从y = 0到y = 20点,导航栏从y = 20到y = 64点.因此导航栏(页面标题和导航按钮所在的位置)的高度为44点,但状态栏和导航栏的总高度为64点.

这是一个很好的资源,可以解决这个问题以及iOS7中的一些其他大小调整特性:http://ivomynttinen.com/blog/the-ios-7-design-cheat-sheet/


onm*_*133 8

我从"编程iOS 7"一书中找到了这个答案,"条形位置和条形指标"一节

如果导航栏或工具栏 - 或搜索栏(本章前面讨论过) - 占据屏幕顶部,则iOS 7约定是应增加其高度以使透明状态栏不足.为了实现这一点,iOS 7引入了条形位置的概念.

UIBarPositionTopAttached

指定栏位于屏幕顶部及其包含视图.具有此位置的条形图将其背景向上扩展,允许其背景内容通过状态栏显示.适用于iOS 7.0及更高版本.