Как динамически устанавливать ограничения для пользовательской ячейки представления таблицы? - PullRequest
1 голос
/ 06 августа 2020

У меня есть настраиваемая ячейка представления таблицы со следующими ограничениями, одно для UILabel и одно для UIImageView:

var titleLabel = UILabel()
var imageView = UIImageView()

override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
    super.init(style: style, reuseIdentifier: reuseIdentifier)
    addSubview(titleLabel)
    
    setTitlelabelConstraints()
    setImageConstraints()
}

func setTitlelabelConstraints() {
    titleLabel.translatesAutoresizingMaskIntoConstraints = false
    titleLabel.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true
    titleLabel.leadingAnchor.constraint(equalTo: imageView.trailingAnchor, constant: 20).isActive = true
    titleLabel.heightAnchor.constraint(equalToConstant: 55).isActive = true
    titleLabel.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -12).isActive = true
}

func setImageConstraints() {
    imageView.translatesAutoresizingMaskIntoConstraints = false
    imageView.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true
    imageView.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 12).isActive = true
    imageView.heightAnchor.constraint(equalToConstant: 55).isActive = true
    imageView.widthAnchor.constraint(equalTo: imageView.heightAnchor, multiplier: 16/9).isActive = true
}

Как условно установить ведущую привязку на 0, чтобы при наличии нет изображения, текстовая метка занимает всю ячейку? Ограничения stati c в настоящее время оставляют пустое место, если изображение отсутствует.

введите описание изображения здесь

1 Ответ

1 голос
/ 06 августа 2020
• 1000 действительно не решаю твою проблему. В конце концов, у вас по-прежнему будет расстояние между изображением и меткой. Ответ реальный заключается в ваших собственных словах: «stati c». Не делайте их stati c! Измените ограничения в зависимости от того, есть ли изображение или нет. В конце концов, вы знаете, есть ли изображение для каждой ячейки, так что все это часть вашей конфигурации.

Ограничения - это полноценные объекты, так как вы устанавливаете ограничение ширины представления изображения и начало метки ограничение, сохраните ссылки на них, и теперь вы можете просто установить ширину на 0 и интервал на 0, когда нет изображения.

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

введите описание изображения здесь

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