我通过子类化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/

10-13 07:29