Я устанавливаю ограничения для представлений (UILabel
, UIImageView
) в пользовательских UIView
внутри UpdateConstraint
функций, как показано ниже.Как видно, я получаю высоту просмотров и использую ее в автоматическом макете.Я знаю, что могу получить размер кадра в функции layoutSubviews
.Если я вызываю updateConstraint()
функцию внутри layoutSubViews
, все работает нормально, но я не знаю, является ли это лучшим подходом.
Кроме того, когда я пытаюсь установить кадр в layoutSubViews()
с помощью label.frame = CGRect..
(без автоматической разметки) ничего не происходит, и я не вижу пользовательских представлений внутри суперпредставления.
override func updateConstraints() {
logoImage.anchor(self.topAnchor, left: self.leftAnchor, bottom: self.bottomAnchor, right: self.rightAnchor, topConstant: 0, leftConstant: 0, bottomConstant: self.frame.height / 2, rightConstant: 0, widthConstant: 0, heightConstant: 0)
label.anchor(self.logoImage.bottomAnchor, left: self.leftAnchor, bottom: nil, right: self.rightAnchor, topConstant: 12, leftConstant: 0, bottomConstant: 0, rightConstant: 0, widthConstant: 0, heightConstant: 0)
super.updateConstraints()
}
override func layoutSubviews() {
print(self.frame.height)
updateConstraints()
}
Я искал ниже сообщения, но не могу найти решение;
Гдеполучить размер кадра пользовательского UIView в его подклассе
Подпредставление пользовательского UIView имеет неправильную x позицию кадра