У меня есть представление коллекции, в котором есть раздел с заголовком, а в каждом разделе есть несколько слов.Слова различаются по размеру.
Поскольку слова отличаются по размеру, я добавил следующее, чтобы предотвратить обрезку длинных слов: layout.estimatedItemSize = CGSize(width: 1.0, height: 1.0)
Однако после установки этого и вызова reloadData (), в ячейки (слова) загружаются не только разделы (заголовки).
Но после прокрутки все разделы, вышедшие из экрана, будут загружать свои слова.Однако, когда я не использую layout.estimatedItemSize, он работает правильно, но слова обрезаются.
Поэтому мой вопрос заключается в том, есть ли другой способ отобразить эти слова (которые в основном представляют собой небольшое представление с меткойбез их обрезания.Или я неправильно использую оценочный размер?
Как я читаю из документов самого яблока: документы Значением по умолчанию для этого свойства является CGSizeZero.Установка его в любое другое значение заставляет представление коллекции запрашивать каждую ячейку для ее фактического размера, используя метод предпочитаемый ячейкой selectedLayoutAttributesFitting (_ :).
Я устанавливаю ограничения динамически и статически (StoryBoard), мое динамическое ограничение какследующее:
if prevCell != nil {
let constraint = NSLayoutConstraint(item: cell, attribute: NSLayoutAttribute.leading, relatedBy: NSLayoutRelation.equal, toItem: prevCell, attribute: NSLayoutAttribute.trailing, multiplier: 1.0, constant: 5.0)
cell.addConstraint(constraint)
self.prevCell = cell
}
Вещи, которые я пробовал до сих пор:
//before reload data invalidate the layout
self.collectionView!.collectionViewLayout.invalidateLayout()
self.collectionView!.reloadData()