我通过继承UICollectionViewFlowLayout创建了一个封面流布局。
有一个动画根据以下方法将一个项目推到屏幕的中心:
-(CGPoint)targetContentOffsetForProposedContentOffset:(CGPoint)proposedContentOffset withScrollingVelocity:(CGPoint)velocity
我需要找到一种方法来了解哪个项目是为了与相关数据项一起制作。
我怎样才能做到这一点?似乎找不到办法。
答案 0 :(得分:2)
UICollectionView上没有方法可以解决这个问题,所以这就是我的工作(iPad,固定的肖像模式,集合视图子视图比屏幕小,所以你可能希望CGPoint更聪明一些); < / p>
// 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或只在需要时调用。