2010-09-15 87 views
1

我想設置一個iPad測試應用程序,基於窗口,我有一個單一的視圖控制器和單個視圖。當我旋轉iPad時,我希望工具欄的方向改變,但不是視圖本身的方向。例如,您工作的某種背景視圖固定在設備上,但狀態欄和工具欄圍繞它旋轉。這將使用戶能夠從各個角度處理視圖,但始終使用正確導向的工具集。更改iPad的方向,旋轉狀態欄,工具欄,但不是主視圖

我想要的美麗實現可以在iPad應用程序的畫筆中找到,畫筆的方向鎖定在設備上,工具欄圍繞它旋轉。我認爲其他繪畫應用程序也是這樣做的。

我一直在想如何做到這一點,但在耗盡了許多關於方向的許多其他問題後,我仍然處於虧損狀態。

任何人都可以指出我朝着一個整潔的解決方案的正確方向嗎? autoresizeMask的自動調整的特定組合?在另一個方向上反向旋轉動畫?使用多個併發視圖控制器,一個用於旋轉視圖,另一個用於非旋轉視圖?

我倒是很欣賞它,

(編輯:試圖澄清的問題,OLIE的評論後。)

+0

我投了你的問題,但你可能想給它一個簡短的編輯,以澄清你要尋找的效果是有一種「背景圖像/視圖」,仍然鎖在設備上,視圖控制器在頂部旋轉。我現在明白了,但是當我最初閱讀這個問題時並不清楚。 – Olie 2010-10-18 14:45:23

回答

0

我曾經有過一段時間這樣做的錯誤 - 我非常肯定你所要求的會讓你對Apple產生HIG違規拒絕。不過,我會試着回憶起問題所在。我很確定它是這樣的:

我有一個tabbarViewController說:「我定位到任何方向。」

有一個標籤是一個普通的老的UIViewController是說:「我只是做LandscapeLeft & L-右」

當你旋轉,內部(UIVC)留放,但外界(TabVC)左右旋轉的東西。

我可能會有一些細節向後或其他複雜的,但一般的想法是:堆疊VC,並非全部VC。

祝你好運!

+0

謝謝你的回答。我其實很早就開始工作了。有人指出了我的解決方案:在視圖控制器的'-loadView'方法中,您希望它的視圖保持固定,使用'UIWindow'的'-insertSubview:belowSubview:'方法,在下面插入非旋轉視圖導航控制器的視圖。這工作完全正確。 – 2010-10-17 12:02:46

+0

啊,你去了。非常類似的想法,你只是將第二個視圖附加到窗口,而我堆疊視圖控制器。一般來說,我傾向於在窗口中準確地擁有一個視圖(使用視圖控制器),然後再從其中查看其他所有視圖。我不知道爲什麼,但它只是感覺「更清潔」。無論如何,你的方式是有效的 - 而且不是很糟糕 - 這就是最重要的。 – Olie 2010-10-18 14:41:59

1

爲了防止轉動,你把這個在您的視圖控制器。 m:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

但是你說你仍然希望視圖框架在響應旋轉時調整大小。我自己並沒有必要這樣做,所以我不確定是否足以讓autoresizingMask具有靈活的寬度和高度;您可能還必須執行didRotateFromInterfaceOrientation:並使用setNeedsLayout和/或手動調整視圖大小。

+0

謝謝你的迴應,但是控制單個視圖的旋轉在這裏確實不是問題。我想要的是保持主視圖不變,狀態欄和工具欄在方向改變時圍繞它旋轉。爲了讓整個屏幕旋轉或不旋轉花生,手邊的問題是同一屏幕不同部分的不同旋轉行爲。 – 2010-09-16 09:53:15

0

就我所處理的程度而言,我看不到任何簡單的問題答案。怎麼樣旋轉一切(tabbar,導航和狀態欄,你的視圖控制器),然後在「舊座標」中重繪視圖控制器的內容,所以對於用戶來說,它會看起來像不旋轉?