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

4

这是一个以模态方式呈现并且因此是全屏的视图控制器。

在故事板中,“顶部布局指南”在y:64处。当状态栏高度为20且导航栏高度为44时,我会预期得到这个结果。

然而,当应用程序运行时,“顶部布局指南”为y:52。我不知道它是如何或为什么会丢失12个点。

3个回答

9
当您使用苹果的导航控制器插入导航栏时,它的高度会根据您的方向而有所不同。例如,纵向导航栏高度为44点,横向为32点。在您的情况下,我猜测当您的应用程序运行时,它处于横向状态,因此“顶部布局指南”为y:52(32+20)。
请参阅以下相关帖子:NavigationBar with rotation.

这很有道理,但奇怪的是界面构建器并没有正确模拟。我该如何向苹果报告错误,以便他们可以调查一下呢? - Brenden
还没有尝试向苹果提交报告,但你可以从这里开始 https://developer.apple.com/bug-reporting/ - zinc1oxide

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;
    }

0
通常情况下,您无法确定故事板(或nib)中对象的几何形状是否为最终屏幕上的几何形状。最终屏幕上的几何形状不仅取决于设备方向,还取决于屏幕尺寸(例如3.5英寸与4英寸的iPhone)。
不幸的是,很容易产生误解。例如,如果故事板在模拟纵向4英寸的iPhone,并且您在纵向4英寸模拟器中运行应用程序,则最终屏幕上的几何形状将与故事板中的几何形状相同。
要在故事板中模拟不同的方向或屏幕尺寸,请访问视图控制器的属性检查器:

enter image description here

如果您正在使用Xcode 5,IB画布右下角还有一个“浮动”按钮,可以快速更改模拟的表单因素。

enter image description here


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