2015-03-23 2 views
3

Я пытаюсь оптимизировать скорость прокрутки и плавность моего UICollectionView (используя пользовательский макет), который имеет около 400 ячеек, 150 из которых видны на экране одновременно.UICollectionView: плавная прокрутка со многими видимыми ячейками

Клетки сами по себе не очень сложны: они состоят из (полностью непрозрачного) цветного фона и двух меток (с тем же фоновым цветом).

До сих пор я прочитал десятки постов на оптимизируя скорость по

  • правильно реиспользование клетки,
  • избежать прозрачности всех слоев,
  • избегая теней коробки,
  • избегая угловой радиус , и
  • избегая позиций и размеров дробных ячеек.

Несмотря на все эти оптимизации, я все еще не могу прокручивать плавно с частотой 60 кадров в секунду. Я также попробовал растеризацию слоя (shouldRasterize) после удаления объектов, но это негативно отразилось на производительности.

Уменьшение количества видимых в то же время ячеек - это единственное, что улучшило производительность - прокрутка полностью гладкая с меньшим количеством ячеек. К сожалению, это не вариант.

Что еще я могу сделать, чтобы приблизиться к 60 кадрах в секунду со многими UICollectionViewCell s видимыми сразу?

ответ

1

UICollectionView ведет себя так же, как UITableView

Используйте эту ссылку для справки: UITableView Optimization

2

Если у вас есть тени на клетку, проверить при использовании shouldRasterize на слое клеток может улучшить частоту кадров.
Кроме того, никогда не делать блокирующие действия внутри - collectionView:cellForItemAtIndexPath: метода

0

Если это помогает любому, у меня была аналогичная проблема, это было до cornerRadius на клетки и UIView внутри клетки. Я смог удалить его из камеры и по-прежнему придерживаться того, что искал я с помощью cornerRadius на UIView. Конечный результат - гладкая прокрутка.

Смежные вопросы