Слишком много UILabels с текстом Unicode - PullRequest
6 голосов
/ 03 апреля 2012

У меня есть 180 UILabels (подпредставления UITableViewCells) в приложении для iPad с шириной 155 x 155 высотой для каждого UILabel, и каждый из них содержит большое количество текста Unicode (арабский язык), когда я прокручиваю вниз TableView он зависает на 1 секунду, а затем продолжает нормально прокручиваться, это происходит при каждой попытке прокрутки пользователем, и это проверяется на устройстве iPAD2.

однако, когда я изменил текст на английский язык (также большое количество английского текста), TableView не зависает и прокручивается нормально.

Кто-нибудь получил представление о том, как решить эту проблему с текстом Unicode?

Заранее большое спасибо.

EDIT:

код здесь велик, поэтому я вкратце создаю каждый UILabel с помощью цикла, подобного следующему: [[[UILabel alloc] initWithFrame:CGRectZero] autorelease]; в cellForRowAtIndexPath методе, затем играю с кадром позже тем же методом в соответствии с ориентацией интерфейса после этого я добавляю каждый UILabel в ячейку следующим образом: [cell.contentView addSubView:myLabel];. каждая ячейка содержит 4 из этих «UILabels», поэтому у меня всего 45 ячеек, ничего более, простой и понятный код.

Ответы [ 2 ]

1 голос
/ 03 апреля 2012

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

Возможно, есть несколько проблем, которые замедляют ваш код.Прежде всего, вы должны попытаться использовать повторное использование нативной ячейки UITableView, добавить метки в UITableViewCell и затем dequeueWithResusableIdentifier их.Вы должны генерировать свои метки только тогда, когда этот метод возвращает nil, и вам нужно создать новый UITableViewCell (из исходного вопроса неясно, если вы уже это делаете).

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

0 голосов
/ 03 апреля 2012

Есть много способов оптимизировать ваш код:

Одна проверка, если ваше приложение не протекает. Правильный выпуск этикеток. Используйте многоразовость клеток. Я не знаю, используете ли вы это или нет. Так как каждый раз, когда вы прокручиваете, вызывается ваш cellForRowAtIndexPath метод делегата.

Если вы не знаете о возможности повторного использования, попробуйте эту ссылку.

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