Я установил UICollectionView
(с раскладкой по умолчанию и вертикальной прокруткой) с пользовательскими ячейками, которые загружаются из xib. Ячейки содержат пару элементов (a UILabel
и UIView
) с ограничениями на них. Я настроил ограничение таким образом, что высота ячейки увеличивается по мере увеличения высоты текста этикетки с использованием нового UICollectionViewFlowLayout
свойства, которое доступно в iOS8, estimatedItemSize
:Вертикальная прокрутка UICollectionView с ячейками для самостоятельной калибровки отображает только половину ячеек
layout.estimatedItemSize = CGSizeMake(self.collectionView.frame.width, 100)
Все работает как шарм кроме есть одна большая проблема : UICollectionView
загружает только половину предметов, возвращенных методом numberOfItemsInSection
. Итак, когда метод возвращает, скажем, 10, мой UICollectionView
отображает только 5 ячеек (но отображает и выводит их отлично).
Некоторые соответствующие выводы из моих отладки попыток:
- Я был в состоянии заставить загрузку остальных элементов вызвав
invalidateLayout
или изменения числа секций от 1 до 2. Но те только отладки хаки. - Отдельно все работает как шарм, когда я заменяю
estimatedItemSize
на свойствоitemSize
, т. Е. Жестко кодирует размер элемента. Но это побеждает функциональность саморазделения, которую я хотел бы реализовать.
Я предполагаю, что что-то не так с тем, как я думаю о ячейках, размер которых зависит от размера. В частности, мне интересно, связана ли проблема с ограничениями.
Буду признателен за любую помощь здесь.
Быстрое обновление: это, кажется, артефакт более распространенных ошибок (или, может быть, мы выясним, что они просто причудливые детали реализации) размер ячейки в UITableViews и UICollectionViews. Я не собирался регистрировать радар против самонастройки UICV, но я положил его на UITableView - https://github.com/rainypixels/SelfSizingCells – rainypixels