2012-06-06 121 views
1

我遇到問題,我的應用程序最初加載時的方向不是UIDeviceOrientationPortrait,而是未正確加載。我支持所有的方向,並在初始加載後,我可以適當地旋轉到任何方向。初始加載時旋轉

它也可以關閉並重新打開任何方向的應用程序。它似乎只是導致問題的初始加載。關於可能發生什麼的任何想法?

我甚至不知道要發佈什麼代碼來嘗試演示此問題。謝謝!

回答

0

事實證明,問題是由於有一個「容器」視圖控制器,然後屏幕上的其他視圖控制器沒有佔用整個屏幕。當加載我的模式視圖時,我是從一個較小的視圖控制器,而不是容器。將模態視圖演示文稿移動到容器中解決了問題。感謝讓我以正確的方向思考。

1

有兩種可能性:

1.)您在第一個視圖中設置了錯誤。沒有代碼,我無法幫助你。

2.)您根據您的UIWindow下注您的輪換。我知道這個問題很好,因爲UIWindow沒有辦法處理方向。我認爲UISplitView做你上面提到的,但不要抱着我。在UIWindow的基礎上解決了很多問題,比如上面的問題或viewControllers之間的手動轉換。到目前爲止,除了解決方法之外,沒有適當的解決方法。

簡而言之,只需對設備方向(不是狀態欄)進行快速檢查,並將視圖旋轉到viewWillAppear或類似的正確方向。它不應該很難,因爲你已經準備好了所有的輪換代碼。

如果您想要真的很懶,只需在您的ViewWillAppear中輸入[self willAnimateRotationToInterfaceOrientation:[[UIDevice currentDevice] orientation] duration:0.3]];即可。理論上,它應該訣竅。

另請參閱:https://stackoverflow.com/a/3897243/581194瞭解更多獲取方向的方法。如果上述不起作用。

+0

我覺得你用1)擊中頭部)。我正在使用[PSStackViewController](https://github.com/steipete/PSStackedView)和我的初始視圖(如果用戶沒有登錄)是一個模態視圖來呈現登錄屏幕。對於已登錄的用戶(沒有看到模式視圖的用戶),加載工作正常,但是如果他們沒有登錄或者他們點擊了註銷按鈕,就會出現上述問題。 –

+0

Ahh有一個缺失的信息「爲登錄用戶加載正常工作」很高興,你解決了它。 – Byte

1

試試這個,

在初始加載viewDidLoad將被調用,所以叫從您的定位方法 viewDidLoad

代碼:

[self Methodname:[UIApplication sharedApplication].statusBarOrientation];

1

儘快嘗試調用此可能的:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];