回答
這是少用的信息,但您可以通過編程添加約束來添加左邊的空格 - x約束來到頁面中間。 您也可以在小視圖的兩個按鈕,這將使它更容易在中間
對準你可以這樣做:
- 定義水平間距爲您的兩個按鈕,讓我們說10爲例
- 集中心水平上左鍵的俯視圖,並在此約束集的乘數爲1/2
(不要忘了丟失的制約因素,如您的按鈕和頂部之間的空間頂視圖)
編輯我不建議添加無用的視圖作爲容器。這是不好的做法。乘數是要走的路。
- 嵌入在一個視圖中的2次(在設計,只需選擇兩個視圖,然後從Xcode的菜單中選擇編輯 - >中嵌入 - >查看)
- 爲了施加約束在容器視圖水平居中在容器中的視圖
- 最終,你可以申請一個頂部約束在容器視圖本身和視圖控制器的視圖之間
你並不需要創建一個額外的UIView
解決這個問題!
從UILayoutGuide文檔:
有許多與加入僞意見,您的視圖層次結構相關的成本。首先,創建和維護視圖本身的成本。其次,虛擬視圖是視圖層次結構的完整成員,這意味着它會爲層次結構執行的每個任務增加開銷。最糟糕的是,不可見虛擬視圖可以攔截用於其他視圖的消息,導致很難找到的問題。
您可以使用UILayoutGuide
s來做到這一點;而不是將按鈕添加到不必要的UIView
中。您在按鈕的左側和右側放置一個UILayoutGuide
,並將它們的寬度設置爲相等。這將按鈕居中。這裏是如何做到這一點的代碼:
view.addSubview(button1)
view.addSubview(button2)
let leftSpace = UILayoutGuide()
view.addLayoutGuide(leftSpace)
let rightSpace = UILayoutGuide()
view.addLayoutGuide(rightSpace)
let views = [
"leftSpace" : leftSpace,
"button1" : button1,
"button2" : button2,
"rightSpace" : rightSpace
]
NSLayoutConstraint.activateConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[leftSpace][button1]-[button2][rightSpace]|", options: [], metrics: nil, views: views))
leftSpace.widthAnchor.constraintEqualToAnchor(rightSpace.widthAnchor).active = true
我已經離開了垂直約束,因爲你只關心水平居中他們,但你需要垂直約束。我相信類似的東西也可以在故事板中完成。
編輯Objective-C的
[self.view addSubview:button1];
[self.view addSubview:button2];
UILayoutGuide *leftSpace = [[UILayoutGuide alloc] init];
[self.view addLayoutGuide:leftSpace];
UILayoutGuide *rightSpace = [[UILayoutGuide alloc] init];
[self.view addLayoutGuide:rightSpace];
NSDictionary* views = @{
@"leftSpace" : leftSpace,
@"button1" : button1,
@"button2" : button2,
@"rightSpace" : rightSpace
};
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[leftSpace][button1]-[button2][rightSpace]|" options:0 metrics:nil views:views]];
[[leftSpace.widthAnchor constraintEqualToAnchor:rightSpace.widthAnchor] setActive:YES];
你假設他/她正在使用swift,但他/她沒有說出任何關於它的信息 – ddb
你可以使用Objective-C以稍微不同的語法做完全相同的事情。 – keithbhunter
@ddb你應該看看問題編輯歷史。問題標題在由Eric – Shubhank
- 1. 設置SQL中兩個字段之間的約束
- 2. 如何對兩個組合字段設置約束?
- 3. 如何設置SDP約束?
- 4. XPages DateTextBox - 設置約束
- 5. 正確設置PureLayout約束?
- 6. constrOptim中的設置約束
- 7. 設置任務的約束
- 8. 在6個按鈕上設置約束。
- 9. UIButton作爲子視圖編程約束
- 10. 需要設置底部中心的UIButton自動佈局約束使用代碼
- 11. 在表上設置列約束(SQL Server)
- 12. 在XCode5中設置約束條件
- 13. 我是否需要設置約束?
- 14. 設置UIViewController的邊距/約束條件
- 15. 如何將約束設置爲GridBagLayout
- 16. 休眠沒有設置外部約束
- 17. 在Adobe Illustrator中設置約束條件
- 18. 在代碼中設置約束元素
- 19. 設置動態跟蹤約束
- 20. PostgreSQL的設置自定義約束
- 21. Hibernate設置約束「ON UPDATE CASCADE」
- 22. 如何設置AVPlayerViewController的佈局約束?
- 23. 設置反向安全約束
- 24. IOS設置約束的動畫圖標
- 25. 約束線性優化設置
- 26. 底部空間不會設置約束
- 27. 如何動態設置UIView約束?
- 28. 以編程方式設置約束
- 29. 設置`constraint.isActive = false`是否解除約束?
- 30. CASCADE DELETE兩個外鍵約束
使用的觀點是另一種選擇,我正在尋找解決方案來約束。你能告訴我這個例子,爲這些按鈕編程設置約束。你還需要什麼信息? – nadim