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

时间:2013-11-21 19:51:21

标签: ios objective-c uistoryboard

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

在故事板中,“顶部布局指南”位于y:64。当状态栏为height:20且导航栏为height:44时,这就是我所期望的。

但是,当应用运行时,“顶部布局指南”为y:52。我不知道它是如何或为何失去12分。

3 个答案:

答案 0 :(得分:9)

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

请参阅此相关帖子:NavigationBar with rotation.

答案 1 :(得分:4)

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

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

您会意识到,虽然应用已将方向更改为横向模式,但navBarHeight的值仍然是旧值(44)。 要解决这个问题,请改用内在大小:

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

答案 2 :(得分:0)

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

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

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

enter image description here

如果你正在使用Xcode 5,那么在右下角的IB画布上还有一个“浮动”按钮,可以让你快速改变模拟的形状因子。

enter image description here