Kai*_*ann 19 iphone ios uicollectionview
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
),此外,滚动足够远的小区时将不会再消失,当它不应该,无论你在哪里滚动到.
使用大于triple-display-height(1441.f/1705.f
)的单元格时,这会发生变化.那些表现出相同的行为,但它们保持不变,无论它们上下滚动多远.
还有什么?:
超越-(BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds
返回无法解决这种情况YES
.
在隐藏属性NO
后,可以通过以编程方式将隐藏属性设置为强制显示单元格(didEndDisplayingCell
例如)
那么,问题是什么?:
我很确定,这是一个错误UICollectionView/Controller/Cell/Layout
,我将在Apple提交TSI.但与此同时:有没有人对快速黑客解决方案有任何想法?
我有一个非常脏的内部解决方案来解决这个问题:
@interface UICollectionView ()
- (CGRect)_visibleBounds;
@end
@interface MyCollectionView : UICollectionView
@end
@implementation MyCollectionView
- (CGRect)_visibleBounds {
CGRect rect = [super _visibleBounds];
rect.size.height = [self heightOfLargestVisibleCell];
return rect;
}
- (float)heightOfLargestVisibleCell {
// do your calculations for current max cellHeight and return it
return 1234;
}
@end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3329 次 |
最近记录: |