開始我想這樣做UIViews,UILabels等使用的InterfaceBuilder這樣從屏幕中間對齊的開始......對齊的UIView從屏幕中間
藍 - 屏幕中間
紅色 - 控制從中間對齊朝着屏幕邊界。
什麼能所需的約束(S)?
開始我想這樣做UIViews,UILabels等使用的InterfaceBuilder這樣從屏幕中間對齊的開始......對齊的UIView從屏幕中間
藍 - 屏幕中間
紅色 - 控制從中間對齊朝着屏幕邊界。
什麼能所需的約束(S)?
你可以給頂視圖約束到屏幕的與那一半寬度的值的左邊緣的屏幕。然後,您可以選擇所有視圖,然後在畫布右下角的「對齊」按鈕的「添加新對齊約束」部分下選擇「Leading Edges」。
我現在正在做這件事,就像你提出的方式一樣,結合@John Riselvato的回答 –
@FredericYesidPeñaSánchez,你真的不應該將約束與設置框架的代碼結合起來。當你使用約束時,你不應該明確地設置任何框架 - 用約束來做所有事情。 – rdelmar
別擔心,我正在使用計算,但沒有設置框架。基本上鍊接頂視圖約束的IBOutlet並相應地調整它的「常量」屬性。 –
float middle = self.view.bounds.size.width/2;
for (int i = 0; i < 10; i++) {
UIView* view = [[UIView alloc] initWithFrame:CGRectMake(middle, 0.0 + (75.0 * i), 100.0, 50.)];
[self.view addSubview:view];
}
很簡單,只需設置x位置在屏幕的中間在的CGRect
在IB上有這種方法嗎? –
你基本上是尋找每個孩子的前沿是父母的一半寬度。
根據該文檔,constraintWithItem:...
使用公式attribute1 == multiplier × attribute2 + constant
,所以對於每個子視圖,你可以用約束做到這一點:
[NSLayoutConstraint constraintWithItem:view
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:view.superview
attribute:NSLayoutAttributeWidth
multiplier:0.5
constant:0]
,而不是爲每個孩子一旦這樣做,你可以創建一個子視圖以一個約束託管所有的孩子。
就接口生成器而言,Xcode 5中沒有任何東西。可以讓你這樣做,但你應該檢查開發者程序的beta版。
事實上,有一個混合的解決方案,工作得很好,看到你之前的兩個答案......另外添加一個子視圖來保存其他視圖對我來說似乎並不舒服。 –
你想在IB或代碼中做到這一點?你需要意見來維持這種輪換安排嗎? – rdelmar
InterfaceBuilder –
您是否在我的評論中看到我的附加問題? – rdelmar