Я создаю интерфейс UICollectionViewCell по коду. Все работает отлично, за исключением правильного ограничения. Когда я запускаю приложение, ярлык заголовка имеет нулевой запас справа. Вот мой кодNSLayoutConstraint margin zero вместо шестнадцати
let titleLabel: UILabel = {
let label = UILabel()
label.backgroundColor = UIColor.purple
label.translatesAutoresizingMaskIntoConstraints = false
return label
}()
func setupViews() {
addSubview(titleLabel)
// titleLabel
// top constraint
addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .top, relatedBy: .equal, toItem: self, attribute: .top, multiplier: 1, constant: 16))
// left constraint
addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .left, relatedBy: .equal, toItem: self, attribute: .left, multiplier: 1, constant: 8))
// right constraint
addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .right, relatedBy: .equal, toItem: self, attribute: .right, multiplier: 1, constant: 16))
// height constraint
addConstraint(NSLayoutConstraint(item: titleLabel, attribute: .height, relatedBy: .equal, toItem: self, attribute: .height, multiplier: 0, constant: 20))
}
Я думаю, что что-то делать с toItem: self
, потому что self
является uilabel
, и я хочу, связанные с его UICollectionViewCell
Загружен ли размер ячейки перед добавлением объектов? Если нет, загрузите ячейку, затем запустите setupViews, а затем запустите self.setNeedsDisplay(), self.layoutIfNeeded(). Если да, вы можете попробовать запустить вышеперечисленные функции. – Starlord
Что произойдет, если вы используете '-16' для постоянной константы ограничения? – vacawama
@vacawama это работает! Как? – bruno