2016-05-30 11 views
8

私は円のレイアウトのUICollectionviewを使用しています。アイテムあたりcontentOffsetを計算しようとしていますが、円形レイアウトの場合、contentsizeは内容と一致しません。iOS: `UICollectionview`、` indexPath`でセルの `contentoffset`を取得する方法

  • collectionviewの総contentSize = 780
  • 最後のアイテムのオフセット量= 397(?)
  • 項目ごとにオフセット量= 33(?)

どのような方法がありますアイテムのオフセットをindexPathまたは少なくともcollectionviewの最後のアイテムの正しい(397)値で取得できますか? contentoffsetをテストして印刷してこれらの値を得ましたが、スクロールせずにこれらの数値(33と397)をコードで計算したいと思います。

collectionviewの中にあるセルのcontentoffset(?)を計算する方法はありますか?indexPath? ありがとう!

+0

たぶん、あなたは、セルのフレームを取得し、それがオフセットコンテンツだ計算知ることによってできますか? UICollectionViewLayoutAttributes * attributes = [self.collectionView layoutAttributesForItemAtIndexPath:indexPath]; CGRect cellRect = attributes.frame; –

+0

OK、私は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

関連する問題