Xcode 10.2, Swift 5.
У меня есть UICollectionViewCell
, определенный в .xib
файле. Я загружаю это в мой UIViewController
(не UICollectionViewController
) подкласс и возвращаю его в cellForItemAt
.
В моем UICollectionViewCell
(называемом TagCell
) я делаю это:
override
func
awakeFromNib()
{
super.awakeFromNib()
self.contentView.translatesAutoresizingMaskIntoConstraints = false
self.translatesAutoresizingMaskIntoConstraints = false
self.layer.borderColor = UIColor(red: 0.354, green: 0.442, blue: 0.297, alpha: 0.74).cgColor
self.layer.borderWidth = 1.0
self.layer.cornerRadius = 4.0
}
У пера есть только верхний уровень UICollectionViewCell
, который я поместил, и UILabel
с фиксированными 4-пиксельными ограничениями на все четыре ребра. Я установил текст UILabel
в cellForItemAt
. Однако итоговая коллекция отображается со всеми ячейками на предполагаемой высоте, установленной в viewDidLoad()
:
override
func
viewDidLoad()
{
super.viewDidLoad()
let nib = UINib(nibName: "TagCell", bundle: Bundle(for: type(of: self)))
self.collectionView.register(nib, forCellWithReuseIdentifier: "TagCell")
let layout = self.collectionView.collectionViewLayout as! UICollectionViewFlowLayout
layout.estimatedItemSize = CGSize(width: 60.0, height: 25.0)
}
Файл Nib ячейки:
Кажется, это все, что Apple и другие ресурсы, которые я нашел в Интернете, говорят мне, но я, должно быть, упускаю что-то важное Я также попытался установить приоритет сопротивления горизонтального сжатия на 1000 на моем UILabel, но они продолжают усекаться.
Я также пытался ввести ограничение ширины >=
, но это, кажется, игнорируется.
Прежде чем установить self.contentView.translatesAutoresizingMaskIntoConstraints
, я получу предупреждение о конфликтующих ограничениях в отладчике. Но теперь он не жалуется на ограничение ширины >=
, даже думая, что он его нарушает.