2016-05-30 4 views
8

Я использую UICollectionview с круговой раскладкой. Я пытаюсь вычислить contentOffset за элемент, но с круговой раскладкой полный contentsize не соответствует содержимому.iOS: `UICollectionview`, как получить содержимое` contentoffset` ячейки `indexPath`

  • общая contentSize В CollectionView в = 780
  • Смещение последнего элемента контента = 397 (?)
  • Содержание компенсировано за единицу = 33 (?)

Есть ли способ Я могу получить смещение для элемента по его indexPath или по крайней мере правильное значение (397) для последнего элемента в collectionview? Я получил эти значения, проверив и распечатав contentoffset, но я хотел бы рассчитать эти числа (33 и 397) кодом без прокрутки.

Так есть способ рассчитать contentoffset (?) Ячейки внутри collectionview от этого indexPath? Спасибо!

+0

Может быть, вы можете получить кадр клетки и зная, что вычислить его содержание смещения? UICollectionViewLayoutAttributes * attributes = [self.collectionView layoutAttributesForItemAtIndexPath: indexPath]; CGRect cellRect = attributes.frame; –

+0

ok, у меня есть x, y, ширина и высота моей ячейки .. но я хочу, чтобы смещение содержимого элемента внутри моего uicollectionview. какой код я бы использовал? –

+0

ContentOffset сообщает вам, сколько scrollView было прокручено в определенном направлении, если contentSize от scrollView больше, чем frame.size, иначе contentOffset равно 0. Если вы хотите перевести это в положение UICollectionViewCell, это будет примерно так: CGFloat offsetY = fabs (self.collectionView.contentOffset.y - cellLayoutAttributes.frame.origin.y); но я не знаю, зачем вам это нужно. Честно говоря, я не уверен, что это правильная логика, потому что UICollectionViewCell не может иметь contentOffset, у него есть frame и indexPath. –

ответ

2

Я нашел проблему, contentsizescrollview является размером с + размер кадра uicollectionview's. Именно по этой причине contentSize вернул больший размер, чем фактический контент.

так: (contentSizeX - collectionviews frame X)/cells = contentOffset per item (780 - 383)/12 => 33