Ответ 1
Итак, я видел аналогичную проблему, когда ширина contentSize всегда была нулевой. Простой ответ: вероятно, в коллекцииView пока нет контента. Вот почему размер содержимого равен нулю.
Я также замечал, что иногда после вызова invalidateLayout
в моем UICollectionView я видел, что self.collectionView.collectionViewLayout.collectionViewContentSize
не совпадает с self.collectionView.contentSize
.
После долгих поисков я нашел отличный совет здесь, в этом сообщении SO
То, что мне нужно было сделать, чтобы оба вычисления contentSize были одинаковыми, заключалось в вызове [self.collectionView layoutIfNeeded]
сразу после вызова [self.collectionView reloadData]
или [self.collectionView.collectionViewLayout invalidateLayout]
.
Это существенно заставляет перезагрузку немедленно выполняться вместо следующего цикла runloop.
Я действительно надеюсь, что это решит вашу проблему.