我遇到了与here相同的问题,即大UICollectionViewCell(显然是UICollectionView高度的两倍以上)在给定的滚动偏移量处消失,然后在给定的滚动偏移量之后重新出现。大型UICollectionViewCell在滚动上消失
我实现@JonathanCichon solution这是继承UICollectionView和执行上_visibleBounds
自定义操作(我知道这是一个私人API,但不管,我并不需要提交它在苹果商店)
这里我自定义集合视图:
#import "CollectionView.h"
@interface UICollectionView()
- (CGRect)_visibleBounds;
@end
@implementation CollectionView
- (CGRect)_visibleBounds
{
CGRect rect = [super _visibleBounds];
rect.size.height = [self heightOfLargestVisibleCell];
return rect;
}
- (CGFloat)heightOfLargestVisibleCell
{
// get current screen height depending on orientation
CGFloat screenSize = [self currentScreenHeight];
CGFloat largestCell = 0;
NSArray *visibleCells = self.visibleCells;
// get the largest height between visibleCells
for (UITableViewCell *c in visibleCells)
{
CGFloat h = c.frame.size.height;
largestCell = h > largestCell ? h : largestCell;
}
// return higher value between screen height and higher visible cell height
return MAX(largestCell, screenSize);
}
这工作,没有更多的消失在滚动,但我仍然有一个问题:如果我执行reloadData
当我滚动位置是在一个大的细胞中间,它作为较早消失... 我注意到在重新加载数据之后,visibleCells
回报nil
(在我heightOfLargestVisibleCell
法),所以它把我的屏幕高度_visibleBounds
但由于屏幕高度<当前可见单元格高度,则不会显示这个...
有人已经面临这个问题?
Thx提前
Thx很多,它的作品就像一个魅力! – Yaman