编辑 - 我修复了它。见答案。
我正在尝试学习如何以编程方式创建约束。我试图在UILabel
中使用此代码将viewDidLoad
约束到屏幕顶部:
override func viewDidLoad() {
super.viewDidLoad()
//the variable label already exists. I make a UILabel.
label = UILabel()
label.text = "Hello"
label.backgroundColor = UIColor(red: 1, green: 1, blue: 0, alpha: 1)
//I add the label to the ViewController
view.addSubview(label)
//I use an array of constraints because I will make more later.
let constraints : [NSLayoutConstraint] = [
NSLayoutConstraint(item: label, attribute: .top, relatedBy: .equal, toItem: topLayoutGuide, attribute: .bottom, multiplier: 1.0, constant: 0.0)
]
view.addConstraints(constraints)
}
当我运行我的应用时,我收到一个错误:
[LayoutConstraints]无法同时满足约束。
我想要的约束等式是:
label.top = 1.0 * topLayoutGuide.bottom + 0.0
当我使用Interface Builder创建看似相同的约束时,它起作用了。但是,当我尝试以编程方式执行此操作时,它不会。我正在做什么有什么问题,我如何使用NSLayoutConstraint
以编程方式设置约束,将我的标签固定在状态栏正下方的屏幕顶部?
我的消息来源:
Apple - Anatomy of a Constraint
答案 0 :(得分:-1)
可以通过将translatesAutoresizingMaskIntoConstraints
设置为false来解决此问题,以避免与现有的Mask Constraints发生冲突:
label.translatesAutoresizingMaskIntoConstraints = false