2011-07-28 34 views
2

我有一個固定橫向的iPad應用程序。一切工作正常,直到那一刻,我編程方式創建的UIView並將其添加到我的根UIViewController的觀點 - 這是而其他所有內容顯示在橫向模式方向總是被設置爲肖像。這個UIView是一個顯示用戶自定義窗體的模式視圖。如何以編程方式創建橫向的UIView?

AlertView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, [[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height)]; 
AlertView.opaque = NO; 
AlertView.backgroundColor = [UIColor blackColor]; 
AlertView.alpha = 0.7; 

<...> // some other configuration code 

[window addSubview:AlertView]; 

所以問題是:我怎樣才能啓動橫向的UIView?所有我能想到的是使用變換一樣:

modalView.transform = CGAffineTransformMakeRotation((180 * M_PI)/360); 

雖然這不是太優雅的方式......

回答

5

,而你的應用程序的其餘部分被橫向顯示您的AlertView被顯示在縱向的原因是因爲你要添加的AlertView作爲窗口的子視圖,而不是將其作爲一個視圖控制器的子視圖視圖。這將它放置在通過自動轉換自動轉換的視圖層次結構之外。

的應用程序的窗口對象通過找到具有對應的視圖控制器其最高子視圖座標自轉。在設備旋轉時,該窗口在該視圖控制器上調用shouldAutorotateToInterfaceOrientation:,並視情況轉換其視圖。如果您希望視圖自動旋轉,它必須是該視圖層次結構的一部分。

所以不是[window addSubview:AlertView];,這樣做[self.view addSubview:AlertView];

+0

賓果!非常感謝,解決了問題! :) – WASD42

+0

謝謝cduhn !!!! – Luda

0

要在橫向UIViews,並提供你希望你的根視圖控制器始終處於肖像模式,你有兩個選擇:

  1. 去做了,你是通過使用旋轉的UIView做的方式變換
  2. 改變你正在做的方式,讓您的 根視圖控制器旋轉(最簡單)。視圖控制器然後將處理你的UIViews旋轉爲你
+0

嗯......我問完全等問題。我沒有將RootViewController設置爲橫向模式的問題,問題是編程創建的UIViews只能處於縱向模式。 – WASD42

+0

嗯,我回答了這個問題...編輯,以澄清 – ColdLogic

0

你應該嘗試設置自動調整掩碼。
當視圖控制器旋轉時,你AlertView的界限會改變了。

yourView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); 
相關問題