2016-05-30 60 views
8

我正在使用圆形布局的UICollectionview。我试图计算每个项目的contentOffset,但圆形布局完整contentsize似乎与内容不匹配。iOS:`UICollectionview`,如何通过`indexPath`获得单元格的`contentoffset`

  • 的的CollectionView总contentSize = 780
  • 内容的最后一个项目的偏移量= 397(?)每个项目
  • 内容偏移量= 33(?)

有什么办法我可以通过indexPath或至少获得collectionview中最后一个项目的正确值(397)来得到项目的偏移量?我通过测试和打印contentoffset得到了这些值,但我想通过代码计算这些数字(33和397),而不必滚动。

那么有没有一种方法可以通过indexPath来计算collectionview内的单元格contentoffset(?)? 谢谢!

+0

也许你可以得到电池的框架,并通过知道计算它的内容偏移? UICollectionViewLayoutAttributes * attributes = [self.collectionView layoutAttributesForItemAtIndexPath:indexPath]; CGRect cellRect = attributes.frame; –

+0

好吧,我有我的单元格的x,y,宽度和高度..但我想要在我的uicollectionview内的项目的内容偏移量。我会用什么代码? –

+0

ContentOffset告诉你如果scrollView的contentSize大于它的frame.size,那么scrollView已经在某个方向上滚动了多少,否则contentOffset是0.如果你想将它转换为UICollectionViewCell的位置,它会是这样的:CGFloat offsetY = fabs( self.collectionView.contentOffset.y - cellLayoutAttributes.frame.origin.y);但我不知道你为什么需要这个。说实话,我不确定这是对的逻辑,因为UICollectionViewCell不能有contentOffset,它有frame和indexPath。 –

回答

2

我发现问题了,scrollviewcontentsize是内容的大小+ uicollectionview's帧的大小。这就是contentSize返回比实际内容大的尺寸的原因。

这样: (contentSizeX - collectionviews frame X)/cells = contentOffset per item (780 - 383)/12 => 33

相关问题