Изображения внутри UILabel - PullRequest
2 голосов
/ 17 июня 2010

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

Сценарий:

  • У меня есть табличное представление с сотнями ячеек, и UILabel является основным компонентом каждой ячейки
  • Текст, который я присваиваю каждой ячейке, содержит последовательности символов, которые необходимо проанализировать и представить в виде изображения

Проще говоря, представьте TableView для программы обмена мгновенными сообщениями, которая анализирует все символы ":)", ":(", ": D" и т. Д. Соответствующими смайликами

Любая информация будет принята с благодарностью!

Ответы [ 3 ]

4 голосов
/ 09 ноября 2010

Я считаю, что вы можете вставить определенные символы Юникода в вашу строку, и iPhone отобразит их как Emoji:

http://www.easyapns.com/category/just-for-fun

2 голосов
/ 17 июня 2010

Один из подходов заключается в использовании UIWebView вместо UILabel. Замените каждый смайлик тегом <img src=...>, где изображение находится в вашем комплекте. Используйте loadHTMLString для заполнения UIWebView и передачи URL-адреса для [[NSBundle mainBundle] resourcePath] в качестве baseURL.

Еще один, более сложный подход для ручного размещения изображений над UILabel. Оставьте несколько мест, где смайлик появится. Измерьте текст и поместите UIImageView над UILabel для каждого смайлика.

Вы также можете использовать CoreGraphics для всего текста и макета изображения. Разбейте строки на текст и смайлики. Когда вы рисуете каждую строку, CGContext будет обновлять текстовую позицию, где он будет рисовать дальше. Когда вы дойдете до смайлика, нарисуйте соответствующее изображение и измените положение текста вручную.

Использование UIWebView, вероятно, наименее сложно для кодирования и имеет дополнительный бонус поддержки стилизованного текста. Это также самый ресурсоемкий процесс, если вы не пропустите табличное представление и не сделаете все в одном UIWebView. Вы можете сделать это немного быстрее, используя javascript для загрузки содержимого при повторном использовании ячеек.

Использование CoreGraphics, вероятно, является самым быстрым и наименее ресурсоемким, если скорость становится проблемой.

0 голосов
/ 17 июня 2010

Может быть, вы могли бы использовать UIWebView с вместо UILabel с

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