2010-06-18 83 views
6

在我的應用程序的某個時候,我想暫時禁用旋轉功能 - 有效地「鎖定」代碼中的方向,類似於iPad上的鎖定切換開關硬件。如何暫時鎖定iPad/iPhone的方向

我目前做:

[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications] 

,當我通過,我呼籲:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications] 

雖然這一切似乎工作,API文檔表明,應該永遠是一個開始後面結束 - 我正在做的事情基本上是相反的。是否有更適合處理「鎖定方向」的API?

回答

10

我認爲這很簡單,因爲不響應控制器的方向更改。您可以根據傳遞的參數有條件地返回true或false,但並不總是必須返回true。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    if (rand()%2 == 0) { // evaluate if I should allow rotate 
     return YES; 
    } else { 
     return NO; 
    } 
} 
+0

感謝 - 偉大的作品! – Eric 2010-06-18 22:43:28

+0

這就是我現在正在做的事情,但有一個缺點: 例如如果我** 0。**設備和視圖控制器是在肖像模式。 ** 1。**將設備旋轉到(比方說)景觀(視圖控制器也旋轉),** 2。**鎖定旋轉。 ** 3。**將設備旋轉爲縱向(在這種情況下視圖控制器不旋轉,這很好)。 ** 4。**然後解鎖旋轉,然後UIViewController不會更新到肖像。我必須再次旋轉它才能獲得以上方法:( – nacho4d 2012-02-08 05:45:44

+0

)在這種情況下,只需聽取加速度計重力並相應地調整自己 – slf 2012-02-09 02:54:16