Я пытаюсь использовать автоматическую разметку программно, чтобы мой настраиваемый вид изменял свой размер при изменении границ.Чего я пытаюсь достичь:
1) сделать изображение как можно большим на экране, но сохраняйте соотношение сторон между его высотой и размером 8/5
2) никогда не выходите за пределы безопасной зоны
3) всегда оставаться посередине
Когда я использую этот набор ограничений в раскадровке, все работает отлично, но когда я делаю то же самое в коде, xcode нарушает мое ограничение высоты (которое я использую для соотношения сторон для представления).Я играл с приоритетами, но безуспешно.Что я делаю неправильно?Вот мой код и скриншот моих ограничений раскадровки:
скриншот ограничений раскадровки
private func setupLayout () {
playingCardView.translatesAutoresizingMaskIntoConstraints = false
//makes the maxim width possible
let playingCardViewWidthConstraint = playingCardView.widthAnchor.constraint(equalToConstant: 800)
playingCardViewWidthConstraint.priority = UILayoutPriority(rawValue: 250)
playingCardViewWidthConstraint.identifier = "width"
//for aspect ratio
let playingCardViewHeightConstraint = playingCardView.heightAnchor.constraint(equalTo: playingCardView.widthAnchor, multiplier: 8.0/5.0)
playingCardViewHeightConstraint.identifier = "height"
//make the view stay within bounds
//add some padding top
let playingCardTopConstraint = playingCardView.topAnchor.constraint(lessThanOrEqualTo: view.safeAreaLayoutGuide.topAnchor, constant: Constants.offsetFromTheEdge)
//add some padding bottom
let plaingCardViewBottomConstraint = playingCardView.bottomAnchor.constraint(lessThanOrEqualTo: view.safeAreaLayoutGuide.bottomAnchor, constant: Constants.offsetFromTheEdge)
//add some padding leading
let playingCardViewLeadingConstraint = playingCardView.leadingAnchor.constraint(lessThanOrEqualTo: view.layoutMarginsGuide.leadingAnchor, constant: Constants.offsetFromTheEdge)
////add some padding trailing
let playingCardViewTrailingConstraint = playingCardView.trailingAnchor.constraint(lessThanOrEqualTo: view.layoutMarginsGuide.trailingAnchor, constant: Constants.offsetFromTheEdge)
NSLayoutConstraint.activate([
playingCardViewWidthConstraint,
playingCardViewHeightConstraint,
playingCardView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
playingCardView.centerYAnchor.constraint(equalTo: view.centerYAnchor),
playingCardTopConstraint,
playingCardViewBottomConstraint,
playingCardViewLeadingConstraint,
playingCardViewTrailingConstraint
])
}
}