Добавить вид снаружи ContentView в ячейке - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть ячейка представления коллекции, и я хочу добавить к ней представление.Apple утверждает, что представления должны быть добавлены к contentView.Вот эта документация:

При настройке ячейки вы добавляете в это представление любые пользовательские представления, представляющие содержимое вашей ячейки.Объект ячейки размещает содержимое в этом представлении перед любыми фоновыми представлениями.

Однако, кажется, я также могу добавить представление невнутри contentView и нет предупреждений или сбоев.Вот мой кодОбратите внимание на комментарий QUESTION - я хочу знать, нормально ли это делать:

class MyCollectionViewCell: UICollectionViewCell {

    @IBOutlet private var imageView: UIImageView!

    private let titleLabel = UILabel(frame: .zero)

    override func awakeFromNib() {
        super.awakeFromNib()

        // QUESTION: Is this ok? Notice I am not adding the `titleLabel` to `self.contentView`
        self.addSubview(titleLabel)

        let horizontalCenterConstraint = NSLayoutConstraint(item: titleLabel, attribute: .centerX, relatedBy: .equal, toItem: self, attribute: .centerX, multiplier: 1.0, constant: 0)
        let verticalCenterConstraint = NSLayoutConstraint(item: titleLabel, attribute: .centerY, relatedBy: .equal, toItem: self, attribute: .centerY, multiplier: 1.0, constant: 0)

        self.addConstraint(horizontalCenterConstraint)
        self.addConstraint(verticalCenterConstraint)
    }
}

В приведенном выше коде вместо добавления представления с помощью self.contentView.addSubview ... вместо этого я просто делаю self.addSubview.Это нормально?

1 Ответ

0 голосов
/ 05 апреля 2019

Большинство вещей возможно , вопрос почему вы хотите это сделать?

Прямо противореча рекомендации автора API, вы рискуете целым рядом потенциальных проблем.например,

  • Возможно, вы ломаете что-то, о чем не знаете
  • Возможно, вы отрицательно влияете на производительность
  • Даже если это работает в настоящее время, оно может сломаться в будущеми у автора нет причин препятствовать этому.

Если то, что вы пытаетесь сделать, невозможно в противном случае, и вы согласны с рисками, сделайте это.В противном случае придерживайтесь четких инструкций автора.

...