NSLAyoutConstraints не применяется для UIView в UICollectionViewCell - PullRequest
0 голосов
/ 02 февраля 2019

Поэтому я пытаюсь ограничить представление внутри UICollectionViewCell , но кажется, что ограничения вообще не применяются

Это мой пользовательский класс ячеек:

class MyCustomCell: UICollectionViewCell {
var message: String?

var messageView: UILabel = {
    let label = UILabel()
    label.translatesAutoresizingMaskIntoConstraints = false

    label.textColor = .black
    label.textAlignment = .left
    label.numberOfLines = 0

    return label
}()

var cardView: UIView = {
    var cardView = UIView()
    cardView.translatesAutoresizingMaskIntoConstraints = false
    return UIView()
}()

override init(frame: CGRect) {
    super.init(frame: frame)

    self.addSubview(cardView)
    cardView.addSubview(messageView)

    setupCardView()
    setupMessageLabel()
}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

func setupCardView() {
    NSLayoutConstraint.activate([
        cardView.topAnchor.constraint(equalTo: self.topAnchor, constant: 5),
        cardView.bottomAnchor.constraint(equalTo: self.bottomAnchor),
        cardView.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 10),
        cardView.rightAnchor.constraint(equalTo: self.rightAnchor, constant: -10)
    ])

    cardView.layer.cornerRadius = 20.0
    cardView.layer.shadowColor = #colorLiteral(red: 0.2549019754, green: 0.2745098174, blue: 0.3019607961, alpha: 1)
    cardView.layer.shadowOffset = CGSize(width: 0.0, height: 0.0)
    cardView.layer.shadowRadius = 12.0
    cardView.layer.shadowOpacity = 0.7

    cardView.backgroundColor = #colorLiteral(red: 0.7490196078, green: 0.3529411765, blue: 0.9490196078, alpha: 1)
}

}

Ограничения полностью игнорируются, и я получаю полностью белый экран

ПРИМЕЧАНИЕ. Моя пользовательская ячейка подключена правильно, когда я пытался добавить метку, и она работает правильно даже с ограничениями

1 Ответ

0 голосов
/ 02 февраля 2019

Теперь проблема решена, когда я добавил

cardView.translatesAutoresizingMaskIntoConstraints = false

прямо перед моими ограничениями ... Но почему это не работает, когда я инициализирую свой UIView таким способом

var cardView: UIView = {
    var cardView = UIView()
    cardView.translatesAutoresizingMaskIntoConstraints = false
    return UIView()
}()

Кто-нибудь есть идеи?

РЕДАКТИРОВАТЬ: Как вы можете видеть в комментариях, проблема была в том, что у меня есть

return UIView()

вместо

return cardView

в моей переменной cardView...

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