Używam UICollectionView
pod scenorysami AutoLayout
. Próbuję ustawić rozmiar komórki na podstawie collectionView
sam w sobie i jest on oparty na metodzie [collectionView: layout: sizeForItemAtIndexPath:]
. collectionView
zależy również od automatycznego układu i podaje nieprawidłowy rozmiar po raz pierwszy (zakładam, że to jest przed układem widoku). Wiem, że będą miały prawidłowy rozmiar po wywołaniu metody viewDidLayoutSubviews
, ale powoduje to podwójny przeładunek elementów collectionView
, co powoduje błędy UI w czasie wykonywania.Rozmiar komórki UICollectionView w AutoLayout
Oto [collectionView: layout: sizeForItemAtIndexPath:]
metoda mojej realizacji.
- (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);
}
"Próbuję ustawić rozmiar komórki na podstawie kolekcjiView" Nie podążając za tobą tutaj? –
@ KyleTruscott Obliczam i zwracam rozmiar komórki na podstawie metody collectionView w metodzie [collectionView: layout: sizeForItemAtIndexPath:]. Problem polega na tym, że ta metoda jest wywoływana przed wykonaniem automatycznego układu. – Pei
Czy mówisz, że rozmiar twoich komórek jest "powiązany" z ogólnym widokiem kolekcji? Być może powinieneś opublikować swoją implementację '[collectionView: layout: sizeForItemAtIndexPath:]' –