2013-06-30 54 views
0

我正在使用initWithFrame方法初始化一個UIView,它將充當視圖控制器主視圖的子視圖;然而,UIView似乎總是基於肖像模式框架(從而將自己擁抱到屏幕側面)而不是橫向模式框架呈現,其將覆蓋整個屏幕。如何初始化UIView,使其覆蓋橫向模式的屏幕?

我在橫向模式下初始化視圖控制器,所以uiview應該用正確的參數初始化,但現在看起來並不是這樣。我一直在使用superview的框架,superview的界限和UIScreen mainscreen作爲可能的論點(rects)到initWithFrame,但我到目前爲止沒有運氣。

+0

1.您的視圖控制器是使用縱向模式下的xib /故事板文件創建的? 2.你用什麼方法initWithFrame?你的觀點? – danypata

回答

2

您需要在初始化後爲您的視圖定義合適的autoresizingMask

首先,初始化視圖frame作爲您的屏幕bounds(或您的父視圖,如果您的父視圖佔用整個屏幕)。

self.myView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | 
    UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | 
    UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin; 

這應該使你的觀點改變其bounds自動當其父母的觀點bounds改變:然後,如下設置你的意見autoresizingMask

+0

如果VC是在肖像模式下使用xib/stroyboard創建的,並且視圖是init在viewDidLoad中,那麼幀/邊界仍然適用於肖像模式,並且'autoresizeMask'只有在「父」視圖將被調整大小。 – danypata

+0

當然,這是因爲你不應該在'viewDidLoad'中做任何依賴於你的視圖維度的初始化,而只能在'viewWillAppear'中進行。 – StatusReport

相關問題