我正在使用风景iPad应用程序遇到一个非常奇怪的布局错误。
应用程序在以横向右方向启动时启动并完美运行。但是,在横向左侧启动时,主视图顶部会添加20px的边距。
这个应用程序的设计在顶部有一个标题栏,在底部有一个导航栏(两个都只是带有几个UILabels / UIButtons的UIViews)。当您在越野车横向模式中启动应用程序并切换到横向右侧时,顶部和底部条形图然后移动20px 在上它们应该被定位的位置 - 即顶部条形图被定位在状态栏下方,底栏浮动在框架底部上方20px处。
确实非常奇怪。正如我所说,如果你在横向右侧打开它,那么完全。
有人有任何想法吗?看到这个错误?
我正在使用iOS SDK 6.1和Xcode 4.6
修改[详细信息]
我添加的一些日志的一些可能线索 - 主视图的框架为(0,0,1024,748),而对[[UIScreen mainScreen] applicationFrame]的调用返回(20,0,748,1024)的框架),这是肖像。当然好奇,但不一定解释启动状态之间的不一致 - 错误状态和功能模式之间的日志是相同的。
编辑[情节变浓]
所以我检查了所有视图帧,并创建了一个可重现的错误。
应用程序中有一个全屏“幻灯片放映”模式,其中隐藏了状态栏。在全屏模式下旋转应用程序时,我能够旋转20px间隙错误。
所以过程是:
-App工作正常,旋转正常 - 输入全屏显示,显示没问题 - 全屏旋转,布局移动20px - 关闭幻灯片,布局仍然移动 - 在第一次旋转时,布局恢复正常
到达那里......有什么类似于我需要在这里调用的setWantsFullScreenLayout吗?
答案 0 :(得分:0)
20像素是状态栏的高度,与旋转相关的偏移量为20px,几乎总是与(根)视图控制器的帧有关。尝试将根视图控制器的视图框设置为0,0
原点。