Ho una galleria nella mia app che utilizza uno UICollectionView
. Le celle hanno una dimensione di circa 70,70. Sto usando ALAssets
da ALAssetLibrary
nella galleria che ho memorizzato in una lista.UICollectionview Scorrimento continuo quando si caricano le celle
Sto usando il solito schema per la compilazione delle celle:
-(UICollectionViewCell*)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
mycell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];
mycell.imageView.image = [[UIImage imageWithCGImage:[alassetList objectAtIndex:indexpath.row] thumbnail]];
return mycell;
}
La mia galleria scorre mosso. Non capisco perché sia così. Ho provato ad aggiungere un NSCache per mettere in cache le immagini in miniatura (pensando che forse la creazione delle immagini fosse costosa), ma questo non ha aiutato le prestazioni.
Mi aspetto che l'interfaccia utente sia burrosa come l'app di riserva.
Attualmente sospetto che potrebbe esserci qualcosa nel UICollectionViewCell prepareForReuse
che potrebbe trattenere il metodo dequeueReusableCellWithReuseIdentifier
ma utilizzando strumenti che non sono riuscito a trovare.
Qualsiasi altra cosa potrebbe causare questo? Esiste un modo "più veloce" per preparare lo UICollectionViewCell
o lo dequeue
in modo più rapido?
Utilizzando gli strumenti, hai individuato una chiamata al metodo che ha richiesto troppo tempo? Per esempio. 0,02 secondi per riutilizzare una cella è troppo per uno scorrimento regolare. –
Sì. Dopo averlo fatto, ho visto il metodo [uicollectionview updatevisiblecellsnow] chiamato tonnellate di volte. Cerca su Google questo problema e arriva a questa domanda http://stackoverflow.com/questions/16336772/uicollectionview-performance-updatevisiblecellsnow. –
Provare a spostare alcune delle funzioni relative alla visualizzazione della cella al metodo willDisplayCell della vista dell'insieme e altre al metodo didEndDisplayingCell. –