我通过子类化UICollectionViewFlowLayout创建了一个封面流布局。
根据以下方法,有一个动画将一个项目推到屏幕中央:
-(CGPoint)targetContentOffsetForProposedContentOffset:(CGPoint)proposedContentOffset withScrollingVelocity:(CGPoint)velocity
我需要找到一种方法来知道这是哪个项目,以便使用相关的数据项目进行处理。
我该如何实现?似乎找不到办法。
最佳答案
UICollectionView上没有方法可以为您提供此功能,所以这就是我要做的事情(iPad,固定的纵向模式,集合视图子视图小于屏幕,因此您可能希望对CGPoint更加聪明);
// Get path for cell in centre
UIWindow *mainWindow = [[UIApplication sharedApplication] keyWindow];
CGPoint pointInScreenCoords = CGPointMake(384, 512);
CGPoint pointInWindowCoords = [mainWindow convertPoint:pointInScreenCoords fromWindow:nil];
CGPoint pointInViewCoords = [self.collectionView convertPoint:pointInWindowCoords fromView:mainWindow];
NSIndexPath* centreIndexPath = [self.collectionView indexPathForItemAtPoint:pointInViewCoords];
根据您需要更新它的频率,您可以将其放入滚动视图委托的didScroll方法,didEndScrolling或仅在需要时调用。
关于ios - 基于UICollectionViewFlowLayout的Cover Flow布局,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22441412/