2013-08-16 6 views
17

Ho un UICollectionView comune con paging e tutto.UICollectionView contenuto erratoDimensioni sul primo caricamento, corretto dopo quello

Ancora cercando di capire il motivo per cui il viewDidLoad :, viewWillAppear: e viewDidAppear: solo in prima convocazione vista, ho la dimensione sbagliata quando si chiama myCollectionView.collectionView.contentSize.width. Risponde sempre con larghezza 0 (l'altezza è sempre corretta). Successiva ricarica della vista procurami quella corretta.

ricorso all'utilizzo di

self.collectionView.collectionViewLayout.collectionViewContentSize 

che mi danno l'evento larghezza corretta sul primo carico.

Ancora un mistero per me.

+0

sono sicuro che è qualcosa che ha a che fare con l'autolayout .. prova a disabilitarlo – abbood

+0

Già disabilitato, la prima cosa che ho pensato anch'io. Sembra che non stia caricando la vista abbastanza velocemente, perché sulla ricomparsa la larghezza è corretta (ad esempio quando si ritorna alla stessa vista). – klauslanza

+0

Hai mai trovato una risposta a questo problema? –

risposta

32

Quindi vedevo un problema simile in cui la larghezza di contentSize era sempre zero. La semplice risposta è ... probabilmente non c'è ancora nessun contenuto nella collezioneView. Ecco perché la dimensione del contenuto è zero.

Mi sono anche accorto che a volte dopo aver chiamato invalidateLayout sul mio UICollectionView, stavo vedendo che self.collectionView.collectionViewLayout.collectionViewContentSize non era la stessa di self.collectionView.contentSize.

Dopo molte ricerche ho trovato un ottimo suggerimento here in this SO post

Quello che dovevo fare per ottenere entrambi i calcoli contentSize essere lo stesso è stato quello di chiamare [self.collectionView layoutIfNeeded] subito dopo aver chiamato [self.collectionView reloadData] o [self.collectionView.collectionViewLayout invalidateLayout].

Questo essenzialmente costringe il reload a verificarsi immediatamente anziché nel ciclo successivo di runloop.

Spero davvero che questo risolva il problema.

+0

Mi hai salvato la vita. : D Grazie mille. @ucangetit – iPeter

Problemi correlati