Подтвердить что ты не робот

UICollectionПросмотреть неправильный контентРазмер при первой загрузке, правильно после этого

У меня есть общий UICollectionView с пейджингом и всеми.

По-прежнему пытаюсь выяснить, почему в viewDidLoad:, viewWillAppear: и viewDidAppear:, только при первом вызове просмотра я получаю неправильный размер при вызове myCollectionView.collectionView.contentSize.width. Он всегда отвечает 0 шириной (высота всегда правильная). Последовательная перезагрузка представления вернет мне правильную версию.

Прибегать к использованию

self.collectionView.collectionViewLayout.collectionViewContentSize

которые дают мне правильное значение ширины при первой загрузке.

Еще одна загадка для меня.

4b9b3361

Ответ 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.

Я действительно надеюсь, что это решит вашу проблему.