2012-02-29 2 views
3

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

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

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

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

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

+0

Было бы полезно, чтобы увидеть ваш 'Tableview: cellForRowAtIndexPath:' реализацию. –

ответ

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

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

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

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

+0

Я действительно понял, что я никогда не устанавливал ячейку, идентифицированную в xib, поэтому, как только я сделал эту прокрутку без изображений, теперь очень гладкая. Я также установил свои ярлыки сплошными цветами и не прозрачными. Как я уже сказал, без загрузки 1 UIImageView ячейки прокручиваются плавно, но когда я вернул изображение, он прокручивается немного, но не так сильно, как раньше. Благодаря! – RyanG

+0

Я также вычисляю дату в моей ячейкеForRowAtIndexPath :, Я собираюсь переместить это также и получить эти даты, прежде чем загружать таблицу. – RyanG

4

Внесите подзаголовок UITableViewCell и сделайте свой собственный чертеж в drawRect: на один непрозрачный UIView.

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

+2

И не использовать .xib –

2

В IB установлены некоторые свойства NO.

В скроллерах установите «Горизонтальная прокрутка» на NO. In Touch, установите «Задержка прикосновение содержания» и «Cancellable содержания штрихи» к NO

Это позволит гладкой прокрутке you'r вида таблицы

+0

Спасибо, я установил все из них НЕТ, и это действительно помогло, спасибо! – RyanG

+0

это, не помогло мне –