【发布时间】:2013-11-21 19:51:21
【问题描述】:
这是一个视图控制器,不是模态显示的,因此是全屏显示的。
在故事板中,“顶部布局指南”位于y:64。当状态栏为height:20 而导航栏为height:44 时,这就是我所期望的。
但是,当应用程序运行时,“顶部布局指南”是y:52。我不知道它是如何或为什么会损失 12 分的。
【问题讨论】:
标签: ios objective-c uistoryboard
这是一个视图控制器,不是模态显示的,因此是全屏显示的。
在故事板中,“顶部布局指南”位于y:64。当状态栏为height:20 而导航栏为height:44 时,这就是我所期望的。
但是,当应用程序运行时,“顶部布局指南”是y:52。我不知道它是如何或为什么会损失 12 分的。
【问题讨论】:
标签: ios objective-c uistoryboard
当您使用插入导航栏的 Apple 导航控制器时,它将根据您的方向具有不同的高度。例如,导航栏是纵向 44 点,横向 32 点。在你的情况下,我猜你的应用程序在运行时是横向的,因此“顶部布局指南”是 y:52 (32+20)。
查看此相关帖子:NavigationBar with rotation.
【讨论】:
如果您尝试监控这些导航栏的高度变化,例如:
-(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.5 英寸与 4 英寸 iPhone)。
不幸的是,人们很容易产生其他想法。例如,如果 Storyboard 以纵向模拟 4 英寸 iPhone,并且您在 4 英寸 Simulator 纵向运行应用程序,则最终屏幕上的几何图形将与 Storyboard 中的几何图形相同。
要在情节提要中模拟不同的方向或屏幕尺寸,请访问视图控制器的属性检查器:
如果您使用的是 Xcode 5,IB 画布右下角还有一个“浮动”按钮,可让您快速更改模拟的外形尺寸。
【讨论】: