2010-05-26 68 views
0

開發一個iPad界面,我有一個場景,我有一個UIViewController管理視圖,該視圖直接作爲主UIWindow的子視圖放置。iPad/iPod:autoRotate在窗口中調整視圖

在放入UIWindow之前,該視圖被調整爲非標準尺寸,比如768x460,並且位於屏幕的底部。

旋轉設備時,UIViewController的autoRotate特性會導致視圖被調整大小,以便填充整個UIWindow空間。

我認爲這可能是因爲在XIB中,視圖設置爲窗口大小,但是當我改變它以反映所需的大小時,它仍然將其擴展爲窗口大小。

然後我進入MainWindow XIB並關閉autoresizeSubviews,它仍然發生。

這是一個非常令人沮喪的問題,我希望只有一些明顯的東西我錯過了。

任何人有任何明智的想法?

代碼的請求:

browseController = [[BrowseController alloc] initWithNibName:@"BrowseController" bundle:nil]; 

[[browseController view] setFrame:CGRectMake(0, 544, 768, 460)]; 

[window addSubview:[browseController view]]; 
+0

你可以發佈如何將它添加到窗口的代碼? – rickharrison 2010-05-26 18:21:56

+0

我加了......雖然沒有什麼特別的感覺。我根據需要設置框架,當它旋轉時,這些數字將被丟棄,並重新繪製框架。 – 2010-05-26 18:43:49

回答

0

什麼彈簧和支柱? (aka autoresizingMask)請參閱here。在代碼中,您可能需要額外的行

[[browseController view] setAutoresizingMask:UIViewAutoresizingNone]; 
1

如果您在界面構建器中,請在編輯視圖時單擊大小選項卡。在「autosizing」下點擊所有紅色箭頭,以便它們消失。你不想在那裏有任何紅色箭頭。或代碼,你可以做到以下幾點:從你的問題

browseController.autoresizingMask = UIViewAutoresizingNone; 
0

沒有足夠的信息,但是這是通常這個問題(因此我在做一個受過教育的猜測):

蘋果只規定ONE UIView應該存在於根級別的UIWindow中 - 如果有多個UIView,則很多行爲都是未定義的。通常有一個額外的,你沒有注意到在幾周前有/忘記了。

實際上,我發現當有「多於一個」時,會出現很多這樣的旋轉錯誤,其中蘋果的代碼變得困惑,並開始隨機重新定位事物。

標準的解決方法:

  1. 在每一個應用程序,你永遠做
  2. ......總是有一個單一的,空的,您添加到一個UIWindow
  3. 「MyRootViewController」 ...那麼,只要你想添加儘可能多的意見,子視圖裏面

(因爲蘋果的奇怪的錯誤隻影響一個UIWindow本身 - 所有子視圖工作「預期」)

0

我只是有這個問題,這裏是如何我對其進行了修復:

確保您已爲視圖控件定義了一個視圖,該視圖附加到窗口的頂層。如果你不這樣做,佈局會讓你瘋狂。