故事板中的iOS 7状态和导航栏不同于应用程序中的高度

这是一个视图控制器,而不是模式显示,因此全屏。

在故事板中,“顶部布局指南”在y:64 。 这是我期望的状态栏是height:20和导航栏是height:44

但是,当应用程序运行时,“顶部布局指南”是y:52 。 我不知道如何或为什么会输掉12分。

当您使用Apple的导航控制器插入一个导航栏,它将根据您的方向有不同的高度。 例如,导航栏是纵向44点,横向32点。 在你的情况下,我猜你的应用程序运行时,它在横向,因此“顶部布局指南”是y:52(32 + 20)。

看到这个相关的文章: NavigationBar与旋转。

如果您尝试监视这些导航栏高度更改,例如:

 -(void) viewDidLayoutSubviews { [super viewDidLayoutSubviews]; CGFloat navBarHeight = self.navigationController.navigationBar.frame.size.height; } 

你会意识到,尽pipe应用程序改变方向为横向模式, navBarHeight的价值仍然是旧的( 44 )。 要解决这个问题,请使用固有尺寸:

 -(void) viewDidLayoutSubviews { [super viewDidLayoutSubviews]; CGFloat navBarHeight = self.navigationController.navigationBar.intrinsicContentSize.height; } 

一般来说 ,不能确定故事板(或笔尖)中的对象的几何形状是最终的屏幕几何形状。 最终的屏幕上的几何形状不仅取决于设备的方向,还取决于屏幕尺寸(例如,3.5英寸与4英寸的iPhone)。

不幸的是,很容易想不到。 例如,如果故事板是以纵向模拟4英寸iPhone,并且纵向在4英寸模拟器中运行应用程序,则最终屏幕上的几何graphics将与故事板中的相同。

要在故事板中模拟不同的方向或屏幕尺寸,请访问视图控制器的“属性”检查器:

在这里输入图像说明

如果您使用的是Xcode 5,右下angularIBcanvas上还有一个“浮动”button,可以让您快速更改模拟的形状因子。

在这里输入图像说明