Ограничение nslayout не заставляет объект появляться - PullRequest
0 голосов
/ 15 февраля 2019

Мой код ниже использует код без раскадровки для отображения объекта.Проект строится, но я не вижу текстовое поле, которое пытаюсь программно разместить.Я не знаю, почему код не появляется.Я пытаюсь не использовать раскадровку.

 var enterWeight = UITextField()




override func viewDidLoad() {
    super.viewDidLoad()

    view.addSubview(enterWeight)

    enterWeight.backgroundColor = UIColor.blue


    NSLayoutConstraint.activate ([

        enterWeight.topAnchor.constraint(equalTo: view.topAnchor, constant : 20),
        enterWeight.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant : 20),
        enterWeight.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant : 20),
        enterWeight.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant : 20),


        enterWeight.widthAnchor.constraint(equalToConstant: 50),
        enterWeight.heightAnchor.constraint(equalToConstant: 30)

        ])

}

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

У вас есть конфликтующие ограничения, и они никогда не будут работать таким образом.

Сначала, как упомянуто iFlames, вам нужно установить translatesAutoresizingMaskIntoConstraints на false:

enterWeight.translatesAutoresizingMaskIntoConstraints = false

Затем:

NSLayoutConstraint.activate ([
        enterWeight.topAnchor.constraint(equalTo: view.topAnchor, constant : 20),
        enterWeight.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant : 20),
        enterWeight.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant : 20),
        enterWeight.heightAnchor.constraint(equalToConstant: 30)
])

Задавая textField начальную и конечную букву, вы уже неявно задали ей ограничение ширины, это ширина view минус константы (20 * 2), поэтому вы не должны давать ейограничение ширины, это приведет к конфликту.

0 голосов
/ 15 февраля 2019

Вам нужно установить translatesAutoresizingMaskIntoConstraints на false:

enterWeight.translatesAutoresizingMaskIntoConstraints = false
...