2016-05-30 16 views
8

Yuvarlak bir düzende UICollectionview kullanıyorum. Ben öğe başına contentOffset hesaplamak çalışıyorum ama dairesel düzen ile tam contentsize içeriği eşleşmiyor gibi görünmüyor.iOS: "UICollectionview", "indexPath" ile bir hücrenin "contentoffset" ini nasıl alabilirim?

  • CollectionView'ın toplam contentSize = 780
  • son öğenin ofset içeriği = 397 (?)
  • içerik 33 (?)

herhangi bir yolu var mı = ürün başına ofset Bir öğe için ofseti indexPath veya en son collectionview sonundaki doğru (397) değeriyle alabilir miyim? contentoffset'u test ederek ve yazarak bu değerleri aldım ancak bu numaraların (33 ve 397), kaydırmak zorunda kalmadan kodla hesaplanmasını istiyorum.

Yani indexPath tarafından collectionview içinde bir hücrenin contentoffset (?) Hesaplamak için bir yolu var mı? Teşekkürler!

+0

Belki hücrenin çerçevesini almak ve bu kadar ofset İçeriğin hesaplamak bilerek olabilir? UICollectionViewLayoutAttributes * attributes = [self.collectionView layoutAttributesForItemAtIndexPath: indexPath]; CGRect cellRect = attributes.frame; –

+0

tamam, hücremin x, y, genişliğini ve yüksekliğini aldım .. ama uicollectionview içindeki öğenin içerik ofsetini istiyorum. hangi kodu kullanırdım –

+0

ContentOffset, scrollView'ın contentSize öğesi frame.size'den büyükse scrollView'in bir yönde ne kadar kaydırıldığını söyler, aksi takdirde contentOffset 0'dır. Bunu UICollectionViewCell konumuna çevirmek isterseniz şöyle bir şey olurdu: CGFloat offsetY = fabs (self.collectionView.contentOffset.y - cellLayoutAttributes.frame.origin.y); ama neden buna ihtiyacın olduğunu bilmiyorum. Dürüst olmak gerekirse doğru mantık olduğundan emin değilim çünkü UICollectionViewCell contentOffset'e sahip olamıyor, frame ve indexPath var. –

cevap

2

Sorun bulundu, scrollviewcontentsize içeriğinin boyutudur + uicollectionview's çerçevesinin boyutudur. Bu, contentSize'un asıl içerikten daha büyük bir boyut döndürmesinin sebebiydi.

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

İlgili konular