这是一个视频控制器,而不是模态显示,因此全屏。
在故事板中,“顶部布局指南”位于y:64
。当状态栏为height:20
且导航栏为height:44
时,这就是我所期望的。
但是,当应用运行时,“顶部布局指南”为y:52
。我不知道它是如何或为何失去12分。
答案 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英寸模拟器中以纵向运行应用程序,那么最终的屏幕几何将与故事板中的几何相同。
要在故事板中模拟不同的方向或屏幕尺寸,请访问视图控制器的属性检查器:
如果你正在使用Xcode 5,那么在右下角的IB画布上还有一个“浮动”按钮,可以让你快速改变模拟的形状因子。