2010-01-22 89 views
5

我一直在閱讀一個旋轉的噸,但沒有找到我的查詢解決方案。這裏有:iPhone力量旋轉

我有一個帶有tabbar和隱藏導航控制器在我的選項卡中的肖像應用程序。在應用程序中的某個位置,下一個視圖必須爲橫向。我們希望在沒有任何翻譯或像素移動代碼的情況下調出xib。 (沒有想到這是必需的)我試着只是推動視圖(保持肖像),使用各種方法移動視圖(似乎沒有正確排列事情)。

有沒有辦法告訴它已被佈置在景觀之前被打開的視圖?

在此先感謝!

+0

查找這個問題的答案[這裏] [1] [1]:http://stackoverflow.com/questions/181780/is-there-a-documented-way-to-set -the-iphone-orientation – 2011-07-28 13:36:01

+0

更具體地說,看看這個問題的77-upvotes答案:http://stackoverflow.com/a/4915378/39974 - 推動和彈出一個虛擬視圖控制器似乎工作得很好,至少達到幷包括iOS 5.1。 – 2012-08-08 12:48:56

回答

3

我認爲你不能'強制'輪換。系統決定何時改變設備的方向;所以'方向'屬性本質上是隻讀的。很久以前,當我想確保某個特定視圖始終以一個方向顯示時,我就着眼於同樣的問題。

由於這一點,大多數應用程序允許他們的所有視圖和視圖控制器在應用程序支持的任何方向上工作。我發現試圖限制某些視圖和視圖控制器的行爲最終會產生更多麻煩,並且在視圖和視圖控制器之間轉換時可能會導致問題。

您發佈的代碼將適用於您的視圖。你根本沒有改變方向;您的視圖就像通過以旋轉方式繪製旋轉一樣。我不確定你是否可以在導航欄上做同樣的事情,但是值得一試。如果你能夠控制導航欄的視圖屬性(它也是一個UIView),應用你用於自定義視圖的相同模式應該可以工作。

大多數希望視圖僅在橫向視圖中的應用程序最終會迫使其整個應用程序處於橫向模式。例如,飛行控制只支持一個方向。因此,繪圖代碼非常簡單;無論方向如何,只需繪製視圖並將其旋轉到其支持的一個方向(橫向左或右)。

你的應用程序的設計不會那麼容易......聽起來你不是在設計一個全屏應用程序。您將不得不擔心正確繪製的導航欄和狀態欄。

+0

優秀的一點,我從沒有想過從這個角度來看。 – 2010-01-22 17:30:18

7

發現,這個代碼做的伎倆在viewDidLoad中:

self.view.transform = CGAffineTransformIdentity; 
self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(90)); 
self.view.bounds = CGRectMake(0.0, 0.0, 460.0, 320.0); 

還有1分奇怪的事情。無論我如何將導航欄設置爲隱藏,它都不會旋轉,並停留在視圖的左側。

[[self navigationController] setNavigationBarHidden:YES animated:NO]; 

有沒有人種下此行爲並解決?