【发布时间】:2013-01-10 09:10:06
【问题描述】:
此处描述的UICollectionView 的相同行为已导致this question。即使我决定发布自己的帖子,因为我做了进一步的调查,我不想在评论或编辑上述问题时发表。
会发生什么?
当大单元格显示在UICollectionView 和UICollectionViewFlowLayout 中时,将集合视图滚动到某个偏移量后,单元格将消失。
当进一步滚动直到另一个单元格进入可见区域时,消失/隐藏的单元格再次变得可见。
我使用垂直滚动集合视图和全角单元格进行了测试,但我很确定,类似的水平滚动设置也会发生这种情况。
什么是大细胞?:
所描述的行为发生在高于两倍显示高度的单元格(960.f + 1.f 在 3.5 英寸显示器上,1136.f + 1.f 在 4 英寸显示器上)。
究竟发生了什么?:
当集合视图的滚动偏移量超过cell.frame.origin.y + displayHeightOfHardware 时,单元格隐藏属性设置为YES 并调用-collectionView:didEndDisplayingCell:forItemAtIndexPath:(例如,当scrollingOffset.y 在3 上到达481.f 时,第一个单元格变为隐藏, 5 英寸 iPhone)。
如上所述,当滚动到下一个单元格出现时,隐藏单元格会再次显示(即隐藏属性更改为NO),此外,当滚动足够远时,单元格将永远不会再次消失t,无论您滚动到哪里。
当使用大于三倍显示高度 (1441.f/1705.f) 的单元格时,这种情况会发生变化。这些显示相同的行为,但无论向上和向下滚动多远,它都保持不变。
还有什么?
这种情况无法通过覆盖-(BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds 以返回YES 来解决。
在单元格被隐藏后,不能通过将 hidden 属性设置为 NO 来强制显示单元格(例如在 didEndDisplayingCell 中)
那么,问题是什么?:
我很确定,这是UICollectionView/Controller/Cell/Layout 中的一个错误,我将在 Apple 提交一份 TSI。但与此同时:有人对快速破解解决方案有任何想法吗?
【问题讨论】:
-
您是否从 Apple 那里得到了关于此问题的良好回复?
标签: iphone ios uicollectionview