2016-05-30 7 views
8

Ich benutze eine UICollectionview mit einem kreisförmigen Layout. Ich versuche, die contentOffset pro Artikel zu berechnen, aber mit dem kreisförmigen Layout scheint die volle contentsize nicht den Inhalt übereinstimmen.iOS: `UICollectionview`, wie man` containoffset` einer Zelle durch `indexPath` bekommt

  • Die Gesamtcontent der Kollektion = 780
  • Der Inhalt des letzten Elements offset = 397 (?)
  • Der Inhalt pro Artikel offset = 33 (?)

Gibt es eine Möglichkeit Ich kann den Offset für einen Artikel durch indexPath oder mindestens den richtigen Wert (397) für den letzten Artikel im collectionview bekommen? Ich habe diese Werte durch Testen und Drucken der contentoffset, aber ich möchte diese Zahlen (33 und 397) nach Code ohne Scrollen berechnen.

Also gibt es eine Möglichkeit, eine Zelle contentoffset (?) Innerhalb der collectionview durch indexPath zu berechnen? Danke!

+0

Vielleicht können Sie Zelle Rahmen erhalten und durch das Wissen, dass berechnen es ist Inhalt versetzt? UICollectionViewLayoutAttributes * Attribute = [self.collectionView layoutAttributesForItemAtIndexPath: indexPath]; CGRect cellRect = attributes.frame; –

+0

ok, ich habe die x, y, Breite und Höhe meiner Zelle..aber ich möchte den Inhalt Offset des Elements in meiner uicollectionview. Welchen Code würde ich verwenden? –

+0

ContentOffset teilt Ihnen mit, wie viel scrollView in irgendeine Richtung gescrollt wurde, wenn die contentSize von scrollView größer ist als frame.size, andernfalls ist contentOffset 0. Wenn Sie das in die Position von UICollectionViewCell übersetzen möchten, wäre das etwa: CGFloat offsetY = fabs (self.collectionView.contentOffset.y - cellLayoutAttributes.frame.origin.y); aber ich weiß nicht, warum du das brauchst. Um ehrlich zu sein, bin ich mir nicht sicher, ob das richtige Logik ist, weil UICollectionViewCell contentOffset nicht haben kann, es hat frame und indexPath. –

Antwort

2

Ich habe das Problem gefunden, die contentsizescrollview ist die Größe des Inhalts + die Größe des uicollectionview's Rahmens. Das war der Grund, warum die contentSize eine größere Größe als der tatsächliche Inhalt zurück gab.

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

Verwandte Themen