2014-07-11 16 views
6

AutoLayout etkinleştirilmiş storyboard altında UICollectionView kullanıyorum. Hücre boyutunu collectionView'a göre ayarlamaya çalışıyorum ve [collectionView: layout: sizeForItemAtIndexPath:] yöntemini temel alıyor. collectionView ayrıca otomatik yerleşime bağlıdır ve ilk kez yanlış boyut verir (bunun, görünümün düzeni oluşturulmadan önce olduğunu varsayalım). viewDidLayoutSubviews yöntemi çağrıldıktan sonra doğru boyuta sahip olduklarını biliyorum ancak UI hatalarını çalışma zamanında yapan collectionView öğesinin çift kez yeniden yüklenmesine neden oluyor. Uygulamanızın [collectionView: layout: sizeForItemAtIndexPath:] yöntemini burada bulabilirsiniz.AutoLayout'ta UICollectionView hücre boyutu

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    CGSize innerSize = CGSizeMake(galleryView.frame.size.width - 80, galleryView.frame.size.height - 40); 
    GLPhotoAsset *photo = [(PCOpticsPhotoPoint *)_cluster.points[indexPath.row] photo]; 
    CGFloat ratio = MIN(innerSize.width/photo.size.width, innerSize.height/photo.size.height); 

    return CGSizeMake(photo.size.width * ratio, photo.size.height * ratio); 
} 
+0

"Burada, koleksiyon görünümüne göre hücre boyutunu ayarlamaya çalışıyorum" Burada kalmıyor musunuz? –

+0

@KyleTruscott [collectionView: layout: sizeForItemAtIndexPath:] yöntemindeki koleksiyonView'e göre hücre boyutunu hesaplayıp döndürüyorum. Sorun, otomatik düzenleme yapılmadan önce bu yöntemin çağrılmasıdır. – Pei

+0

Hücrelerinizin büyüklüğünün, toplama görünümünün geneline ilişkin "ilişkili" olduğunu mu söylüyorsunuz? Belki de uygulamanızı yüklemelisiniz: [collectionView: layout: sizeForItemAtIndexPath:] ' –

cevap

1

Clip Subviews özellikinizin kontrol edildiğinden emin olun. . . .

Ve koleksiyonunuzView özellik cellSize boyutu & Konum Bölümünde uygun olmalıdır. . .

Bu size yardımcı olabilir. . .

0
Eğer sizeForItemAtIndexPath önce yanlış yerleşimi boyutu alıyorsanız gibi

: adlandırılan sonra goto film şeridi ve bu 3 için verilen hücre boyutunu kontrol edilir - CollectionView, CollectionViewCell ve CollectionViewFlowLayout

Onları aynı yapın. (Ayrıca, gereksiniminiz doğrultusunda, varsayılan koleksiyon görünüm boyutuna göre boyutu da yapın)

İlgili konular