То же поведение UICollectionView, как описано здесь, было вызвано этим вопросом. Несмотря на то, что я решил опубликовать свой собственный, потому что я провел дальнейшие расследования, я не хотел публиковать в комментарии или редактировать вопрос, упомянутый выше.
Что происходит?:
Когда большие ячейки отображаются в UICollectionView с UICollectionViewFlowLayout, после прокрутки представления коллекции до определенного смещения ячейки исчезнут.
При прокрутке дальше, пока другая камера не попадет в видимую область, исчезающая/скрытая ячейка снова станет видимой.
Я тестировал с вертикальным списком коллекции прокрутки и полноразмерными ячейками, но я уверен, что это также произойдет с аналогичными настройками для горизонтальной прокрутки.
Что такое большие ячейки?:
Описанное поведение происходит с ячейками, превышающими вдвое больше высоты дисплея (960.f + 1.f на 3,5-дюймовых дисплеях, 1136.f + 1.f на 4 дюйма).
Что именно происходит?:
Когда смещение прокрутки в представлении коллекции превышает cell.frame.origin.y + displayHeightOfHardware, свойство скрытых ячеек установлено на YES и вызывает вызов -collectionView:didEndDisplayingCell:forItemAtIndexPath: (например, первая ячейка изменяется на скрытую, когда scrollingOffset.y достигает 481.f на 3, 5-дюймовый iPhone).
Как описано выше, при прокрутке до появления следующей ячейки скрытая ячейка снова отображается (т.е. скрытое свойство изменяется на NO) и, кроме того, при прокрутке достаточно далеко ячейка никогда не исчезнет снова, t, независимо от того, где вы прокручиваете.
Это изменяется при работе с ячейками, большими, чем triple-display-height (1441.f/1705.f). Они показывают одно и то же поведение, но оно остается неизменным, независимо от того, насколько далеко они прокручиваются вверх и вниз.
Что еще?:
Ситуация не может быть исправлена путем переопределения -(BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds для возврата YES.
Ячейки не могут быть принудительно отображены с установкой скрытого свойства на NO программно после их скрытия (например, в didEndDisplayingCell)
Итак, в чем вопрос?:
Я уверен, что это ошибка в UICollectionView/Controller/Cell/Layout, и я отправлю TSI в Apple. Но тем временем: Есть ли у кого-нибудь идеи для быстрого решения hack?