2013-02-05 140 views
1

我想以編程方式設置視圖。通過偏好我寧願編程的意見,而不是使用界面生成器,我覺得我有一個更好的控制,由於某種原因...處理視圖大小編程高度,寬度和邊距

我設置了一個視圖有兩個子視圖和一個按鈕。當我改變方向時,我試圖達到的目標是相同的觀點。最初我以爲我需要計算屏幕大小,然後計算一些分區來計算出這些變化,但看起來我可以在UIViewAutoresizing上處理***

我遇到的問題是頂部邊距。這是我的子視圖的代碼。

// Create sub view for Logo 
UIView *logoView =[[UIView alloc] initWithFrame:CGRectMake(0,0,320,280)]; 
[logoView setBackgroundColor:[UIColor blueColor]]; 
logoView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight; 

// Create sub view 
UIView *buttonView =[[UIView alloc] initWithFrame:CGRectMake(0, logoView.bounds.size.height, 320,200)]; 
[buttonView setBackgroundColor:[UIColor redColor]]; 
buttonView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleTopMargin; 

下面是一幅肖像和風景的圖片,您可以通過「白色」空間查看問題。

Portrait

Landscape

+0

您是否希望藍色視圖佔用該空白區域或紅色視圖? – Mathew

+0

@Mathew red請 – StuartM

回答

1

你要麼希望兩個視圖(紅色和藍色)與旋轉後的空間比例的量來結束:

logoView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleBottomMargin; 
buttonView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleTopMargin; 

或者你想要紅色視圖的尺寸與其開始時的尺寸相同,並調整藍色視圖以騰出空間:

logoView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight; 
buttonView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleTopMargin; 
+0

非常感謝你!這讓我發狂,而且使用上述任何一種方法都更有意義,希望我更多地考慮過它! – StuartM

0

使用自動版式。 ü不必須處理所有這些問題......

+0

如何使用autolayouts,我不知道,任何教程/例子/信息? – StuartM

+0

同樣適用於這個問題,這僅適用於ios6 ...我希望應用程序也可用於ios5。 – StuartM

相關問題