如何将 NSLayoutConstraints 与 CGrect 框架结合起来(Swift 4)

how to combine NSLayout Constraints with CGrect frame (Swift4)

我正在尝试实用地创建一个文本字段,不使用情节提要。我当前的代码有编译错误。我需要使用 NSLayout 约束来确保我的代码可以在 ipad 和 iphone 上工作。

    import UIKit
var aa:[NSLayoutConstraint] = []
class ViewController: UIViewController {

var btn : UITextField!

override func viewDidLoad() {
    super.viewDidLoad()
    btn = UITextField(frame: CGRect(x: 50, y: 100, width: 200, height: 50))

    let leadingc2 = btn.widthAnchor.constraint(equalToConstant: 80)
    let trailingC2 = btn.heightAnchor.constraint(equalToConstant: 50)
    let topc2 = btn.centerXAnchor.constraint(equalTo: self.view.centerXAnchor, constant: -50)
    let bottomc2 = btn.centerYAnchor.constraint(equalTo: self.view.centerYAnchor, constant: -250)

    aa = [leadingc2,trailingC2,topc2,bottomc2]

    NSLayoutConstraint.activate(aa)
    self.view.addSubview(btn)
}


}

你能试着按顺序重写这两行吗:

view.addSubview(btn)
NSLayoutConstraint.activate(aa)

约束可能不适用于不共享层次结构的视图,这意味着在将按钮添加到该超视图之前,您无法激活按钮与其超视图之间的约束。