Tricks for improving iPhone UITableView scrolling performance?

51,589

Solution 1

  1. Cache the height of the rows (the table view can request this frequently)
  2. Create a least-recently-used cache for the images used in the table (and invalidate all the inactive entries when you receive a memory warning)
  3. Draw everything in the UITableViewCell's drawRect: if possible avoid subviews at all costs (or if you require the standard accessibility functionality, the content view's drawRect:)
  4. Make your UITableViewCell's layer opaque (same goes for the content view if you have one)
  5. Use the reusableCellIdentifier functionality as recommended by the UITableView examples/documentation
  6. Avoid gradients/complicated graphical effects that aren't pre-baked into UIImages

Solution 2

  1. If you are subclassing UITableViewCell, don't use a Nib, write it in code instead. It's much faster than loading Nib files.
  2. If you're using images, make sure you're caching them so you don't have to load from file more than once for each (if you have the memory -- you'd be surprised how much space images take up).
  3. Make as many elements opaque as possible. Similarly, try not and use images with transparency.

Solution 3

The developer behind Tweetie has written extensively about this and has some code that demonstrates how it was done for that app. Basically, he/she advocates one custom view per table cell, and drawing it manually (rather than subviewing with Interface Builder, among other options).

fast-scrolling-in-tweetie-with-uitableview

Also, Apple has updated its own sample code for TableView in its TableViewSuite tutorials (maybe in response to this?)

TableViewSuite

Solution 4

#1 performance killer for UITableView scrolling is drawing shadows on any cell view layer, so if scrolling performance matters then don't do shadows unless basically it doesn't slow down your main thread.

thought this had to be said since none of the accepted answers made mention of shadows and layers. :+)

Share:
51,589
Jonah
Author by

Jonah

Updated on May 24, 2020

Comments

  • Jonah
    Jonah almost 4 years

    I have a uitableview that loads fairly large images in each cell and the cell heights vary depending on the size of the image. Scrolling performance is decent, but can sometimes be jerky.

    I found these tips I found on the FieryRobot blog:

    glassy-scrolling-with-uitableview

    more-glassy-scrolling-with-uitableview

    Does anyone have any tips for improving uitableview scrolling performance?