4

我在横向 iPad 应用程序中遇到了一个非常奇怪的布局错误。

当应用程序以横向启动时,它会启动并完美运行。但是,当以横向左侧开始时,主视图顶部会添加 20 像素的边距。

这个应用程序的设计在顶部有一个标题栏,在底部有一个导航栏(两者都只是带有几个 UILabels/UIButtons 的 UIViews)。当您在有问题的横向左模式下启动应用程序并切换到横向右时,顶部和底部栏会在它们应该定位的位置上方移动 20 像素 - 即顶部栏位于状态栏下方,而底栏浮在框架底部上方 20 像素处。

这真的很奇怪。正如我所说,如果您以横向打开它,它会完美运行。

有人有什么想法吗?看到这个错误了吗?

我正在使用 iOS SDK 6.1 和 Xcode 4.6

编辑[更多细节]

我添加的一些日志中的一些可能的线索——主视图的帧为 (0,0,1024,748),而对 [[UIScreen mainScreen] applicationFrame] 的调用返回的帧为 (20,0,748,1024),是肖像。当然很好奇,但不一定能解释启动状态之间的不一致——错误状态和功能模式之间的日志是相同的。

编辑[情节变厚]

所以我检查了所有的视图框架,并创建了一个可重现的错误。

应用程序中有一个全屏“幻灯片”模式,其中隐藏了状态栏。当应用程序以这种全屏模式旋转时,我能够旋转 20px 间隙错误。

所以过程是:

-应用程序正常工作,旋转正常 -进入全屏显示,显示正常 -全屏旋转,布局移动 20px -关闭幻灯片,布局保持移动 -第一次旋转时,布局恢复正常

到达那里......有没有类似于 setWantsFullScreenLayout 的东西我需要在这里调用?

4

1 回答 1

0

20 像素是状态栏的高度,相对于旋转的 20 像素偏移几乎总是与(根)视图控制器的框架有关。尝试将根视图控制器的视图框架设置为具有0,0原点。

于 2013-03-02T04:51:33.753 回答