2013-03-01 66 views
4

我在使用橫向iPad應用程序時遇到了非常奇怪的佈局錯誤。iPad應用程序在橫向打開時添加了邊距,而不是橫向正確

當應用程序以橫向右側方向啓動時,應用程序將啓動並運行完美。但是,如果在橫向左側開始,則會在主視圖的頂部添加20px的邊距。

這個應用程序的設計在頂部有一個標題欄和底部的導航欄(都是隻有UIViews與幾個UILabels/UIButtons)。當您在越野車橫向模式中啓動應用程序並切換到橫向右側時,頂部和底部橫條然後移動20px 高於,他們應該放置位置 - 即頂部橫條位於狀態欄下方,並且底部欄杆在框架底部上方浮動20px。

確實很奇怪。正如我所說,它的作品完美如果你打開它在景觀右。

任何人有任何想法?看到這個錯誤?

我使用的iOS SDK 6.1和4.6的Xcode

編輯[詳情]

從某些日誌我增加了一些可能的線索 - 主視圖具有的幀(0,0, 1024,748),而[[UIScreen mainScreen] applicationFrame]的調用返回一幅(20,0,748,1024)的幀,它是肖像。當然好奇,但並不一定解釋啓動狀態之間的不一致性 - 日誌在錯誤狀態和功能模式之間是相同的。

編輯[情節變稠]

所以,我檢查了所有的視角畫面,並創建了一個reproduceable錯誤。

應用程序中有一個全屏「幻燈片放映」模式,狀態欄處於隱藏狀態。當以全屏模式旋轉應用程序時,我能夠旋轉20px的間隙錯誤。

所以這個過程是:

-APP正常工作時,轉動細 - 進入全屏顯示,顯示好 -rotate全屏,佈局移動20像素 -close幻燈片,佈局遺體轉移 -Upon第一旋轉,佈局恢復正常

去那裏...有什麼類似於setWantsFullScreenLayout,我需要在這裏調用?

回答

0

20像素是狀態欄的高度,相對於旋轉的偏移量20px幾乎總是與您的(根)視圖控制器的框架有關。嘗試設置您的根視圖控制器的視圖框架,使其具有0,0原點。

+0

這是我的第一個想法 - 有應用程序的全屏部分,其中狀態欄是隱藏的,但是我從代碼和info.plist中刪除了所有與狀態欄有關的業務。 我添加了一些日誌的一些可能的線索 - 主視圖有一個框架(0,0,1024,748),而對[[UIScreen mainScreen] applicationFrame]的調用返回一個框架(20,0,748,1024) ,這是肖像。 當然好奇,但並不一定解釋啓動狀態之間的不一致性 - 日誌在錯誤狀態和功能模式之間是相同的。 – 2013-03-04 10:29:59

+0

我最近沒有重新檢查,但iOS應用程序始終以縱向模式啓動,並且如果設備立即旋轉,則會發送輪換通知。所以你會一直得到你在iPad上發現的框架。您是否嘗試更改幀起源和自動調整掩碼? – Pascal 2013-03-04 22:22:00

相關問題