【发布时间】:2016-06-23 00:29:31
【问题描述】:
我有一个 UIButton 子类,它的高度需要 80pt,但在 UIStackView 等中使用时宽度表现正常...如何在子类中实现。
以下代码成功改变高度,但 UIStackView 没有调整布局以准确高度:
class MenuSelectionButton: UIButton {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.layer.cornerRadius = 5.0
}
override func layoutSubviews() {
super.layoutSubviews()
var newFrame = frame
newFrame.size.height = 80
frame = newFrame
}
}
工作代码:
class MenuSelectionButton: UIButton {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.layer.cornerRadius = 5.0
addHeightConstraint()
}
private func addHeightConstraint () {
let heightConstraint = NSLayoutConstraint(item: self, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1, constant: 80)
NSLayoutConstraint.activateConstraints([heightConstraint])
}
}
【问题讨论】:
标签: swift uiview autolayout initialization subclass