UITableView производительность плавной прокрутки - PullRequest
5 голосов
/ 27 мая 2010

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

Ответы [ 2 ]

6 голосов
/ 27 мая 2010

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

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

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

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

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

0 голосов
/ 27 мая 2010

Честно говоря, я не уверен, что ответить.

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

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

Никогда не нашел лучшего способа, чем этот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...