我正在使用PureLayout框架並在Swift中編寫我的UIView。Swift PureLayout:在最高垂直居中的子視圖上方和下方添加x點填充
我有一個視圖,其中包含四個按鈕,即而不是所有高度相同。
我已經添加了約束來平分這些按鈕,並將它們垂直居中放置在視圖中,並在結尾的按鈕兩側添加了填充。但是,我不確定如何設置視圖的高度/頂部約束,以便它與最高按鈕的頂部之間有8.0點的間隙。我可以將約束添加到每個按鈕的頂部和底部,以使它們距視圖邊緣大於等於8.0像素,但這意味着視圖可以垂直拉伸,同時仍然保持這些約束。我不會知道這些按鈕中哪一個是最高的,直到運行時爲止。
我能想到的唯一選擇是通過我的按鈕遍歷我的按鈕,並找到最高存儲在一個變量,並使用它,同時使我的約束,但我想知道是否有辦法用PureLayout做到這一點更簡單一點,而不必遍歷所有這些對象。有沒有一種方法我錯過了,說「讓這個值儘可能小,同時滿足剩下的約束條件」,我可以將其應用於視圖的高度,而不是?
let topOffset = CGFloat(8.0)
let bottomOffset = CGFloat(8.0)
button1.autoConstrainAttribute(.top, to: .top, of: self, withOffset: topOffset, relation: NSLayoutRelation.self.autoConstrainAttribute(.bottom, to: .bottom, of: button1, withOffset: topOffset, relation: NSLayoutRelation.greaterThanOrEqual)
button2.autoConstrainAttribute(.top, to: .top, of: self, withOffset: topOffset, relation: NSLayoutRelation.self.autoConstrainAttribute(.bottom, to: .bottom, of: button2, withOffset: topOffset, relation: NSLayoutRelation.greaterThanOrEqual)
button3.autoConstrainAttribute(.top, to: .top, of: self, withOffset: topOffset, relation: NSLayoutRelation.self.autoConstrainAttribute(.bottom, to: .bottom, of: button3, withOffset: topOffset, relation: NSLayoutRelation.greaterThanOrEqual)
button4.autoConstrainAttribute(.top, to: .top, of: self, withOffset: topOffset, relation: NSLayoutRelation.self.autoConstrainAttribute(.bottom, to: .bottom, of: button4, withOffset: topOffset, relation: NSLayoutRelation.greaterThanOrEqual)
//MISSING: Somehow make self's height as small as possible
我對這個不成熟的道歉表示歉意,但是這裏有一些我正在瞄準的東西。忽略水平間距。矩形是視圖,圓形是按鈕,大小各不相同。視圖需要在這些按鈕中最高/最低處上方/下方填充8.0個填充點,即在這種情況下爲藍色填充點。它們都是在視圖中垂直居中的,我不知道它們的大小,直到我在實例化視圖時動態設置圖像。
你可以發送你想達到什麼樣的一個形象?很難理解你的意思 –
將你的按鈕放在另一個容器中並向現有容器添加約束。 –
@AndriiChernenko此視圖*是*另一個容器。 –