【问题标题】:iOS 7 status and navigation bar different height in storyboard than in appiOS 7状态和导航栏在故事板中的高度与在应用程序中不同
【发布时间】:2013-11-21 19:51:21
【问题描述】:

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

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

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

【问题讨论】:

    标签: ios objective-c uistoryboard


    【解决方案1】:

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

    查看此相关帖子:NavigationBar with rotation.

    【讨论】:

    • 这是有道理的,但奇怪的是界面生成器确实正确地模拟了这一点。如何向 Apple 提交错误,以便他们进行调查?
    • 尚未尝试向 Apple 提交报告,但您可以从这里开始developer.apple.com/bug-reporting
    【解决方案2】:

    如果您尝试监控这些导航栏的高度变化,例如:

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

    【讨论】:

      【解决方案3】:

      一般而言,您无法确定情节提要(或笔尖)中对象的几何形状将是屏幕上的最终几何形状。最终的屏幕几何形状不仅取决于设备方向,还取决于屏幕尺寸(例如,3.5 英寸与 4 英寸 iPhone)。

      不幸的是,人们很容易产生其他想法。例如,如果 Storyboard 以纵向模拟 4 英寸 iPhone,并且您在 4 英寸 Simulator 纵向运行应用程序,则最终屏幕上的几何图形将与 Storyboard 中的几何图形相同。

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

      如果您使用的是 Xcode 5,IB 画布右下角还有一个“浮动”按钮,可让您快速更改模拟的外形尺寸。

      【讨论】:

        猜你喜欢
        • 2016-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-29
        • 1970-01-01
        • 1970-01-01
        • 2012-02-17
        相关资源
        最近更新 更多