我在快速使用 anchor 调整 UIButton
和 UILabel
大小时遇到问题。
我现在的看法:
我想要标签和按钮填充整个 View ,并在两者之间留出一个空白空间(“开放空间”)。这是我的代码:
import UIKit
class standardLabel: UIView {
private var label: UILabel!
private var button: UIButton!
let openSpace: CGFloat = 4.0
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
label = UILabel()
button = UIButton()
label.backgroundColor = cLightBlue
label.textColor = cWhite
label.textAlignment = .center
label.font = fBigFont
button.backgroundColor = cWhite
button.setTitleColor(cDarkBlue, for: .normal)
button.titleLabel?.font = fBigCleanFont
label.translatesAutoresizingMaskIntoConstraints = false
button.translatesAutoresizingMaskIntoConstraints = false
addSubview(label)
addSubview(button)
setConstraints()
//layer.masksToBounds = true
//layer.cornerRadius = cornerRad
backgroundColor = UIColor.brown//superview?.backgroundColor
}
func setTextLabel(text: String) -> Void {
label.text = text
}
func setTextButton(text: String) -> Void {
button.setTitle(text, for: .normal)
}
private func setConstraints() -> Void {
let margins = layoutMarginsGuide
label.topAnchor.constraint(equalTo: margins.topAnchor).isActive = true
label.bottomAnchor.constraint(equalTo: margins.bottomAnchor).isActive = true
label.leadingAnchor.constraint(equalTo: margins.leadingAnchor).isActive = true
button.topAnchor.constraint(equalTo: margins.topAnchor).isActive = true
button.bottomAnchor.constraint(equalTo: margins.bottomAnchor).isActive = true
button.trailingAnchor.constraint(equalTo: margins.trailingAnchor).isActive = true
label.trailingAnchor.constraint(equalTo: button.leadingAnchor, constant: openSpace).isActive = true
label.widthAnchor.constraint(equalTo: button.widthAnchor).isActive = true
}
}
我是否在设置 anchor 时犯了错误,或者是否因为我创建了一个单独的类而产生了问题?
最佳答案
我尝试了你的代码,它完全没问题,我刚刚发现两个 View 之间有 4.0,但由于按钮的颜色是白色,你无法看到标签和按钮之间的间距。
尝试将间距增加到 20.0,您就会知道差异。
关于ios - 自动调整 anchor 大小不会将 subview 设置为角点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39787945/