Swift - Xcode 8 - iOS 10 - 无法创建简单约束

时间:2016-09-18 03:36:00

标签: ios iphone swift xcode autolayout

编辑 - 我修复了它。见答案。

我正在尝试学习如何以编程方式创建约束。我试图在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

Apple - Programmatically creating Constraints

StackOverflow - SWIFT | Adding constraints programmatically

1 个答案:

答案 0 :(得分:-1)

可以通过将translatesAutoresizingMaskIntoConstraints设置为false来解决此问题,以避免与现有的Mask Constraints发生冲突:

label.translatesAutoresizingMaskIntoConstraints = false