兩種方式我能想到做這一關我的頭頂:
- 以編程方式設置約束。創建一個包含按鈕上的電流約束的屬性,然後你可以做沿東西線(免責聲明:寫在Chrome中,可能包含錯別字,根據需要編輯):
`如果讓約束=自我。 buttonConstraints { NSLayoutConstraint.deactivate(約束) }
let views: [String : UIView] = ["Agent" : self.agentButton, "Teacher" : self.teacherButton]
let newConstraints: [NSLayoutConstraint] = {
switch role {
case .teacherAndAgent:
self.teacherButton.isHidden = false
self.agentButton.isHidden = false
return NSLayoutConstraint.constraints(withVisualFormat: "V:[agent]-[teacher]-|", metrics: nil, views: views)
case .teacherOnly:
// you get the idea
case .agentOnly:
// ditto
}
}()
NSLayoutConstraint.activate(newConstraints)
self.buttonConstraints = newConstraints`
- 什麼可能是簡單的,雖然是使用UIStackView握住你的按鈕。至少在當前的macOS上,NSStackView會根據它的哪些視圖隱藏來自動調整佈局。如果iOS上的UIStackView的行爲方式相同,它可能會爲您做很多工作,而無需手動佈局約束。
只是想知道,爲什麼不改變基於角色的按鈕名稱和顏色,而不是改變約束? –
2按鈕可以在同一時間顯示 – Neko
讓我明白一點。讓我們說,用戶角色是老師,所以你想要顯示頂部的教師按鈕和底部的代理按鈕,不是嗎? –