Как активировать одиночные вар-ограничения в Swift - PullRequest
0 голосов
/ 21 февраля 2020

Мой код Swift ниже пытается объявить 2 ограничения, которые действуют как ограничения ведущего и верхнего якоря. Я могу сделать это в раскадровке, но я не знаю, как это сделать, просто используя код и без раскадровки. Какая моя цель здесь. То, что у меня есть код ниже, не компилируется, но должно быть близко.

@IBOutlet var dx : UITextField!

var lead = NSLayoutConstraint()
var top = NSLayoutConstraint()

override func viewDidLoad() {

    NSLayoutConstraint.activate([
        dx.topAnchor.constraint(equalTo: top, constant: 50),
        dx.leadingAnchor.constraint(equalTo: lead, constant: 50)

        ]

1 Ответ

0 голосов
/ 21 февраля 2020

Предполагая, что вы просто забыли вставить в конечную фигурную скобку, ваша проблема в том, что top и lead - это произвольные ограничения макета, которые вы создали выше. Вы хотите прикрепить его к ограничениям вашего superView.

NSLayoutConstraint.activate([
    dx.topAnchor.constraint(equalTo: view.topAnchor, constant: 50),
    dx.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 50),
])

Чтобы объявить эти ограничения снаружи, попробуйте что-то вроде

class myVC: UIViewController {
    var myButton: UIButton!
    var buttonWidthConstraint: NSLayoutConstraint!
    var buttonHeightConstraint: NSLayoutConstraint!
    // Other ViewController Stuff
    override func viewDidLoad() {
        myButton = UIButton(frame: .zero)
        buttonWidthConstraint = myButton.widthAnchor.constraint(equalToConstant: 50)
        buttonHeightConstraint = myButton.heightAnchor.constraint(equalToConstant: 25)
        NSLayoutConstraint.activate([buttonWidthConstraint, buttonHeightConstraint])
    }
}
...