У меня есть галерея в моем приложении, использующая UICollectionView
. Ячейки имеют размер приблизительно 70,70. Я использую ALAssets
из ALAssetLibrary
в галерее, которую я сохранил в списке.UICollectionview Прокрутка изменчивая при загрузке ячеек
Я использую обычный шаблон для заполнения ячеек:
-(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;
}
Моя галерея прокручивается рывками. Я не понимаю, почему это так. Я попытался добавить NSCache для кэширования миниатюр (возможно, создание изображений было дорогим), но это не помогло в производительности.
Я бы ожидал, что пользовательский интерфейс будет таким же маслянистым, как и приложение для акций.
Я теперь подозреваю, что это может быть что-то в UICollectionViewCell prepareForReuse
, которое может быть поднято до dequeueReusableCellWithReuseIdentifier
, но с использованием инструментов я не смог его найти.
Любые другие вещи, которые могут быть причиной этого? Есть ли более «быстрый» способ подготовить UICollectionViewCell
или к dequeue
им быстрее?
Используя инструменты, вы запятнать вызов метода, который занимает слишком много времени? Например. 0.02 сек для повторного использования одной ячейки слишком много для плавной прокрутки. –
Да. После этого я увидел, что метод [uicollectionview updatevisiblecellsnow] называется тоннами раз. В эту проблему попала эта проблема и попал на этот вопрос http://stackoverflow.com/questions/16336772/uicollectionview-performance-updatevisiblecellsnow. –
Попробуйте переместить некоторые функции, связанные с отображением ячейки, на метод willDisplayCell в виде коллекции и другие методы didEndDisplayingCell. –