как объединить ограничения NSLayout с рамкой CGrect (Swift4) - PullRequest
0 голосов
/ 25 августа 2018

Я пытаюсь создать текстовое поле прагматично, не используя раскадровку.Мой текущий код имеет ошибку компиляции.Мне нужно использовать ограничение 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)
}


}

1 Ответ

0 голосов
/ 25 августа 2018

Не могли бы вы попробовать переписать эти две строки в следующем порядке:

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

Ограничения могут не применяться к представлениям, которые не разделяют иерархию, что означает, что вы не можете активировать ограничения между кнопкой и ее суперпредставлением, пока кнопка не будет добавлена ​​к этому суперпредставлению.

...