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,以便他们能够进行调查?我还没有尝试向苹果公司提交报告,但你可以从这里开始