UITableView гладкое выполнение прокрутки

Что делает прокрутку настолько изменчивого на UITableView, когда изображения загружаются? Это, потому что они должны быть добавлены как подпредставления? Или это, потому что изображения должны кэшироваться? Оба?

5
задан Sheehan Alam 27 May 2010 в 06:29
поделиться

2 ответа

Потому что они добавляются как подпредставления, а рисование подвидов требует много работы, поскольку они должны быть составлены. Тем более, когда Core Graphics или Core Animation рисуют несколько ячеек с этими подпредставлениями.

Лорен Брихтер (atebits) объясняет это лучше:

Как и в Mac OS X, на iPhone есть две системы рисования. Один - CoreGraphics, другой - LayerKit CoreAnimation. CoreGraphics использует процессор, CoreAnimation использует все, что считает самым быстрым - скорее всего, графический процессор.

Графический процессор iPhone ненавидит смешивание, поэтому Apple рекомендует сохранять как можно больше непрозрачных изображений. Иногда у вас нет выбора - если у вас есть метка поверх изображения, вы вынуждены сделать метку прозрачной, иначе вы получите большой некрасивый блок вокруг вашего текста.

Что делать разработчику? Разумеется, предварительно смешайте… с CoreGraphics в вашем собственном представлении. Если вы смешиваете все вместе в одном статическом представлении по запросу (например, когда табличное представление перемещает ячейку на экране), это немного дороже для первого кадра, но каждый кадр после этого CoreAnimation имеет дело только с одним большим непрозрачным текстура… которую он любит. Это больше, чем просто смешение. Если вы подумаете о том, что происходит с точки зрения перерисовки, наличие одного большого представления на ячейку таблицы - большая победа, потому что CoreAnimation будет касаться только одного заданного пикселя на экране один раз, а не несколько раз (потенциально, в зависимости от того, насколько перекрываются ваши старые вид иерархии имел).

6
ответ дан 14 December 2019 в 13:28
поделиться

Честно говоря, я не знаю, что ответить.

Я знаю, что когда у меня действительно «тяжелый» UITableView, и мне нужно, чтобы он быстро прокручивался, я использую метод от создателя Tweetie:

http://blog.atebits.com/2008 / 12 / fast-scrolling-in-tweetie-with-uitableview /

Лучшего способа не найти.

0
ответ дан 14 December 2019 в 13:28
поделиться