Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS 7状态和导航栏在情节提要中的高度与应用程序中的高度不同_Ios_Objective C_Uistoryboard - Fatal编程技术网

iOS 7状态和导航栏在情节提要中的高度与应用程序中的高度不同

iOS 7状态和导航栏在情节提要中的高度与应用程序中的高度不同,ios,objective-c,uistoryboard,Ios,Objective C,Uistoryboard,这是一个视图控制器,它的显示方式不同,因此是全屏的 在故事板中,“顶部布局指南”位于y:64。当状态栏为height:20且导航栏为height:44时,这就是我所期望的 但是,当应用程序运行时,“顶部布局指南”是y:52。我不知道它是如何或者为什么会失去12分。当你使用苹果的导航控制器时,它会插入一个导航条,根据你的方位,它会有不同的高度。例如,导航栏纵向为44点,横向为32点。在您的情况下,我猜当您的应用程序运行时,它处于横向,因此“顶部布局指南”是y:52(32+20) 请参阅此相关帖子:

这是一个视图控制器,它的显示方式不同,因此是全屏的

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


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

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

请参阅此相关帖子:

一般来说,您无法确定故事板(或nib)中对象的几何图形是否是最终的屏幕几何图形。最终的屏幕几何结构不仅取决于设备方向,还取决于屏幕尺寸(例如,3.5英寸与4英寸iPhone)

不幸的是,人们很容易不这么想。例如,如果storyboard在纵向模拟4英寸iPhone,并且您在纵向模拟的4英寸模拟器中运行应用程序,那么最终屏幕上的几何图形将与storyboard中的几何图形相同

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

如果您使用的是Xcode 5,在IB画布的右下角还有一个“浮动”按钮,允许您快速更改模拟的形状因子


如果您试图监视这些导航栏高度变化,例如:

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

这是有道理的,但奇怪的是界面生成器确实正确地模拟了这一点。我如何向苹果公司提交一个bug,以便他们能够进行调查?我还没有尝试向苹果公司提交报告,但你可以从这里开始