2016-03-23 30 views
0

我用下面的代碼來設置UIView裏面的一個子UIView(一個白色框)。如何在父視圖中設置uiview大小?

float x = 10.0; 
float y = 40.0; 
float w = self.view.frame.size.width - 20.0f; 
float h = self.view.frame.size.height/3.0; 
UIView *whiteBox = [[UIView alloc] initWithFrame:CGRectMake(x, y, w, h)]; 

基本上,我想繪製一個10像素的白色框到父UIView的兩個邊緣。但是,白色框的右側總是超出父視圖的邊界。它看起來像self.view.frame.size.width大於實際視圖的寬度。我使用iphone5S作爲模擬器。 我只是想知道如何設置白框的正確寬度。

回答

0

你在做什麼?您可能會從故事板獲得父視圖的寬度值,然後才能調整屏幕大小並調整屏幕大小。

爲避免這樣的問題,最好使用自動佈局,而不是提供容易出錯並需要時間閱讀的這些類型的計算。如果可以,在故事板中添加uiview,並將常量等於10的前導,尾隨,頂部和底部約束添加到超級視圖中。

+0

寬度是600,它在ViewDidLoad方法中。是的,我可以在故事板中使用我已經完成的自動佈局。我只是好奇如何在代碼中實現這一點。當然,我仍然可以使用自動佈局約束。我只想知道爲什麼它看起來uiview的幀寬度不適合我當前的模擬器(Iphone5S)。 – mmjuns

+0

'ViewDidLoad'是你的問題。該方法之後沒有設置框架。嘗試將其移至'ViewWillAppear:'或'ViewDIdAppear:'請參閱http://stackoverflow.com/questions/6757018/why-am-i-having-to-manually-set-my-views-frame-in-viewdidload for更多信息。 –

0

您可以使用左邊界和右邊界等約束,以便視圖本身自動就其超視圖而言。

+0

是的。我已經做到了。只是想知道爲什麼我的代碼無法正常工作。看來我的當前模擬器的寬度不正確。 – mmjuns

相關問題