Почему закрепление UIStackView на всех краях вызывает ошибку неоднозначного ограничения? - PullRequest
0 голосов
/ 08 мая 2020

Следующий код представляет собой попытку программно закрепить UIStackView на всех краях - ie сделать его полноэкранным. Что такого в этих, казалось бы, простых ограничениях, которые вызывают эту ошибку?

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        let stack = UIStackView(arrangedSubviews: [])

        view.addSubview(stack)
        NSLayoutConstraint.activate([
            stack.leadingAnchor.constraint(equalTo: view.leadingAnchor),
            stack.trailingAnchor.constraint(equalTo: view.trailingAnchor),
            stack.topAnchor.constraint(equalTo: view.topAnchor),
            stack.bottomAnchor.constraint(equalTo: view.bottomAnchor),
        ])
    }

}

Ошибка ограничения, напечатанная в отладчике (ссылка на WTFAutoLayout ):

(
    "<NSAutoresizingMaskLayoutConstraint:0x600003407840 h=--& v=--& UIStackView:0x7f97e240f020.width == 0   (active)>",
    "<NSLayoutConstraint:0x60000340ccd0 H:|-(0)-[UIStackView:0x7f97e240f020]   (active, names: '|':UIView:0x7f97e6002d90 )>",
    "<NSLayoutConstraint:0x60000340dd10 UIStackView:0x7f97e240f020.trailing == UIView:0x7f97e6002d90.trailing   (active)>",
    "<NSLayoutConstraint:0x6000034073e0 'UIView-Encapsulated-Layout-Width' UIView:0x7f97e6002d90.width == 414   (active)>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x60000340dd10 UIStackView:0x7f97e240f020.trailing == UIView:0x7f97e6002d90.trailing   (active)>

1 Ответ

1 голос
/ 08 мая 2020

Добавьте также приведенный ниже код:

stack.translatesAutoresizingMaskIntoConstraints = false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...