So verwende ich UICollectionView
unter AutoLayout
-fähigen Storyboard. Ich versuche, die Zellengröße basierend auf collectionView
selbst einzustellen und es basiert auf [collectionView: layout: sizeForItemAtIndexPath:]
Methode. collectionView
hängt auch von Auto-Layout und es gibt falsche Größe beim ersten Mal (ich nehme an, das ist vor der Ansicht ist layouted). Ich weiß, dass sie die richtige Größe haben, nachdem viewDidLayoutSubviews
Methode aufgerufen wird, aber es verursacht doppelte Nachladung der collectionView
Elemente, die UI Störungen zur Laufzeit macht.UICollectionView Zellengröße in AutoLayout
Hier ist [collectionView: layout: sizeForItemAtIndexPath:]
Methode meiner Implementierung.
- (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);
}
"Ich versuche, die Zellengröße basierend auf collectionView festzulegen" Nicht auf Sie? –
@KyleTruscott Ich berechne und gebe die Zellengröße basierend auf collectionView in der Methode [collectionView: layout: sizeForItemAtIndexPath:] zurück. Das Problem ist, dass diese Methode vor dem automatischen Layout aufgerufen wird. – Pei
Willst du sagen, dass die Größe deiner Zellen mit dem Rect der Sammelansicht insgesamt "verwandt" ist? Vielleicht sollten Sie Ihre Implementierung von '[collectionView: layout: sizeForItemAtIndexPath:]' –