Просмотр не отображается и централизуется с помощью автоматического размещения - PullRequest
1 голос
/ 21 апреля 2020

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

Ответы [ 3 ]

1 голос
/ 21 апреля 2020

Попробуйте вот так

NSLayoutConstraint(item: newView,
                   attribute: NSLayoutConstraint.Attribute.centerX,
                   relatedBy: NSLayoutConstraint.Relation.equal,
                   toItem: view,
                   attribute: NSLayoutConstraint.Attribute.centerX,
                   multiplier: 1,
                   constant: 0).isActive = true

NSLayoutConstraint(item: newView,
                   attribute: NSLayoutConstraint.Attribute.centerY,
                   relatedBy: NSLayoutConstraint.Relation.equal,
                   toItem: view,
                   attribute: NSLayoutConstraint.Attribute.centerY,
                   multiplier: 1,
                   constant: 0).isActive = true
1 голос
/ 21 апреля 2020

здесь проблема ... во-первых, вы устанавливаете фрейм newView, во-вторых, вы также устанавливаете translatesAutoresizingMaskIntoConstraints = false, чтобы XCode не понимал, что вы хотите установить, фрейм или ограничения. поэтому, если вы установите фрейм, вы не сможете снова добавить ограничения на него позже.

, поэтому лучшее решение здесь в соответствии с вашими потребностями:

view.addSubview(newView)
newView.translatesAutoresizingMaskIntoConstraints = false

newView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
newView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
newView.widthAnchor.constraint(equalToConstant: 200).isActive = true
newView.heightAnchor.constraint(equalToConstant: 200).isActive = true
1 голос
/ 21 апреля 2020

Ограничения по размеру отсутствуют для newView. Вы удалили их с помощью newView.translatesAutoresizingMaskIntoConstraints = false. Чтобы восстановить все необходимые ограничения, добавьте следующие строки в viewDidLoad:

newView.widthAnchor.constraint(equalToConstant: 200).isActive = true
newView.heightAnchor.constraint(equalToConstant: 200).isActive = true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...