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

70

我刚刚使用默认的主从模板创建了一个简单的iOS 7应用。

MasterViewController.m 文件中的 viewDidAppear 方法中,我进行了日志记录。

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

根据我所了解的,iOS 7中的导航栏高度应为64个点,起点应为0个点,因此应该位于状态栏下方。但是实际上你所接收到的高度分别为44和20。以下是我所查阅的资料:

1) iOS 7 UI过渡指南

由于状态栏是透明的,因此可以看到它后面的视图。

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

如果你的应用程序使用自定义图像作为导航栏的背景,则需要提供一个“更高”的图像,使其延伸到状态栏后面。导航栏的高度从44个点(88像素)更改为64个点(128像素)。

2个回答

91

导航栏和状态栏是有区别的,令人困惑的是它们在屏幕顶部看起来像一个整体特性,但实际上这些区域可以分成两个不同的视图:状态栏和导航栏。状态栏跨越从y=0到y=20点,而导航栏则跨越从y=20到y=64点。因此,导航栏(也就是页面标题和导航按钮所在的位置)高度为44点,但状态栏和导航栏加在一起总共有64点高。

以下是一个很好的资源,解答了这个问题以及iOS7中其他尺寸方面的细节: http://ivomynttinen.com/blog/the-ios-7-design-cheat-sheet/


8
我从《Programming iOS 7》一书中获取了这个答案,章节是“栏位置和栏度量”。
如果导航栏或工具栏(或在本章前面讨论的搜索栏)位于屏幕顶部,则iOS 7的惯例是将其高度增加到低于透明状态栏。为了实现这一点,iOS 7引入了栏位置的概念。 UIBarPositionTopAttached 指定栏位于屏幕顶部以及其包含视图。具有此位置的栏将其背景向上扩展,允许其背景内容显示在状态栏中。在iOS 7.0及更高版本中可用。

请查看以下链接以获取有关UIBarPositionTopAttached的更多信息:https://developer.apple.com/library/ios/documentation/uikit/reference/UIBarPositioningDelegate_Protocol/index.html - JaredH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接