Оптимизация iOS UITableViewCell - PullRequest
       7

Оптимизация iOS UITableViewCell

3 голосов
/ 29 февраля 2012

В моем приложении у меня есть UITableView, который содержит пользовательские UITableViewCells. Прокрутка очень вялая и медлительная, и мне нужно решить эту проблему.

Каждая ячейка содержит 5-6 меток, несколько кнопок и изображение.

У меня есть xib для ячейки, куда я помещаю кнопки, метки и представление изображений, но я установил все изображения в cellForRowAtIndexPath. Для загрузки изображений я использую [UIImage imageNamed: @ ""], который я читаю лучше для оптимизации. Я также повторно использую клетки.

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

Есть ли у кого-нибудь предложения о том, как создать довольно сложную ячейку таблицы, сохраняя при этом хорошую и плавную производительность? Имеет ли пользовательская ячейка как производительность XIB?

Ответы [ 3 ]

9 голосов
/ 29 февраля 2012
  1. Убедитесь, что вы действительно используете ячейки. Убедитесь, что клетка Идентификатор, который вы используете, установлен в XIB UITableViewCell в конструкторе интерфейсов.

  2. Используйте меньше прозрачности в ваших подпредставлениях. Если это вообще возможно, зайдите в свои ярлыки и убедитесь, что их фон совпадает с фоном ячейки.

  3. Проверьте неоптимизированный код. Например, если вы отображаете отформатированную дату и создаете экземпляр NSDateFormatter каждый раз, когда вызывается tableview:cellForRowAtIndexPath:, это действительно затормозит ваше приложение.

  4. Используйте инструменты с модулями Timing и Core Animation, чтобы узнать, на что тратится основная часть вашего времени. В конечном счете, они могут выявить истинную проблему производительности.

4 голосов
/ 29 февраля 2012

Реализация пользовательского подкласса UITableViewCell и создание собственного чертежа в drawRect: на одном непрозрачном UIView.

Выполнение этого таким образом значительно ускоряет прокрутку.

2 голосов
/ 29 февраля 2012

В IB установите для некоторых свойств значение NO.

В скроллерах установите для параметра «Горизонтальная прокрутка» значение NO.В приложении Touch установите для параметра «Задержка касания содержимого» и «Отменяемые касания содержимого» значение NO

. Это позволит плавно прокручивать вид таблицы

.
...