Eu tenho um uitableview que carrega imagens razoavelmente grandes em cada célula e as alturas das células variam dependendo do tamanho da imagem. O desempenho de rolagem é decente, mas às vezes pode ser irregular.
Encontrei estas dicas no blog da FieryRobot:
glassy-scrolling-with-uitableview
mais rolagem vítrea com uitableview
Alguém tem alguma dica para melhorar o desempenho de rolagem do uitableview?
Respostas:
UITableViewCell
'sdrawRect:
se possível, evite subvisualizações a todo custo (ou se você precisar da funcionalidade de acessibilidade padrão, as visualizações de conteúdodrawRect:
)UITableViewCell
camada opaca (o mesmo se aplica à visualização de conteúdo, se houver)UITableView
exemplos / documentaçãoUIImage
sfonte
UITableViewCell
, não use um Nib, escreva-o em código. É muito mais rápido do que carregar arquivos Nib.fonte
O desenvolvedor por trás do Tweetie escreveu extensivamente sobre isso e possui um código que demonstra como foi feito para aquele aplicativo. Basicamente, ele defende uma visão customizada por célula da tabela, e desenhando-a manualmente (ao invés de subvisualizar com Interface Builder, entre outras opções).
rolagem rápida no tweetie com uitableview
Além disso, a Apple atualizou seu próprio código de amostra para TableView em seus tutoriais TableViewSuite (talvez em resposta a isso?)
TableViewSuite
fonte
O assassino de desempenho número 1 para a rolagem UITableView é desenhar sombras em qualquer camada de visualização de célula, então se o desempenho da rolagem é importante, não faça sombras, a menos que basicamente isso não desacelere seu thread principal.
pensei que isso tinha que ser dito, uma vez que nenhuma das respostas aceitas fazia menção a sombras e camadas. : +)
fonte
Qualquer problema com o
UITableView
desempenho de rolagem pode ser resolvido usando técnicas já descritas em outras respostas. No entanto, muitas vezes o desempenho lento é causado por algo inerentemente errôneo ou repetitivo.O fato de que
UITableView
reutiliza as células e o fato de que cada célula pode precisar de sua própria imagem - juntos torna a solução um pouco complexa. De como está sendo resolvido de forma geral, aqui eu resumo as coisas que devem ser cuidadas:[tableView reloaddata]
cellForRowAtIndexPath
, inclua o código que definirá os dados (texto) do objeto de modelo de dados correto da matriz.Para evitar problemas, consulte este tutorial sobre carregamento lento de imagens dentro da exibição de tabela.
fonte