2014-07-11 21 views
6

Così sto usando UICollectionView sotto AutoLayout storyboard -enabled. Sto provando a impostare la dimensione della cella in base allo collectionView e si basa sul metodo [collectionView: layout: sizeForItemAtIndexPath:]. collectionView dipende anche dal layout automatico e fornisce dimensioni errate al primo tentativo (presumo che questo accada prima che la vista sia strutturata). So che avranno le dimensioni corrette dopo che il metodo viewDidLayoutSubviews è stato chiamato, ma causa il doppio ricaricamento degli elementi collectionView che rende i glitch dell'interfaccia utente in fase di esecuzione.dimensione della cella UICollectionView nel layout automatico

Ecco [collectionView: layout: sizeForItemAtIndexPath:] metodo della mia esecuzione.

- (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

"Sto cercando di impostare la dimensione della cella in base a collectionView" Non ti segue qui? –

+0

@KyleTruscott Sto calcolando e restituendo la dimensione della cella in base a collectionView nel metodo [collectionView: layout: sizeForItemAtIndexPath:]. Il problema è che questo metodo viene chiamato prima che venga eseguito il layout automatico. – Pei

+0

Stai dicendo che la dimensione delle tue celle è "correlata" al retto della vista di raccolta complessiva? Forse dovresti pubblicare la tua implementazione di '[collectionView: layout: sizeForItemAtIndexPath:]' –

risposta

1

Assicurarsi che la proprietà la vostra clip subviews di vista sia selezionata. . . .

E il tuo CollectionView proprietà cellsize deve essere corretta in formato & Posizione Sezione. . .

Potrebbe essere questo ti aiuta. . .

0

Come hai trovato una dimensione di layout sbagliato prima sizeForItemAtIndexPath: si chiama, storyboard poi goto e controllare la dimensione celle dato per questi 3 - CollectionView, CollectionViewCell e CollectionViewFlowLayout

Falli li stessi. (anche rendere la dimensione relativa alla dimensione di visualizzazione raccolta predefinita, come richiesto)