Как Apple использует жирные и обычные шрифты для имени контактов в ABPeoplePickerNavigationController - PullRequest
2 голосов
/ 12 марта 2011

Коротко и сладко:Моя конечная цель состоит в том, чтобы, используя одну UILabel с двумя словами, отобразить одно слово жирным шрифтом, а другое - обычным шрифтом.Все решения, которые я нашел, у меня над головой!: (

Подробнее:Я задал вопрос на днях, который не дал мне ответа, на который я надеялся, и теперь похоже, что мне нужно воссоздать ABPeoplePickerNavigationController с использованием UITableViewController и содержимого из ABAddressBook.Если вы читаете мой предыдущий вопрос и можете придумать лучшее решение, круто!Если нет ...

Когда я воссоздаю PeoplePicker, я действительно хочу точно имитировать реализацию Apple по умолчанию, особенно то, как они используют как жирный, так и обычный шрифты для имени контакта в одном и том жеlabel.

Теперь я знаю, что этот вопрос часто задавался в SO и других местах.У многих людей есть такая потребность, и решения могут быть разными:

  1. использовать веб-просмотр
  2. использовать методы UIStringDrawing
  3. подкласс UILabel и переопределить drawrect
  4. углубиться в CoreText
  5. использовать библиотеку ThreeTwenty
  6. использовать две uilabels, создать одну жирным шрифтом,один как обычно, и поместите их рядом друг с другом (потребует от меня подкласса UITableViewCell для размещения двух меток

Решения № 2, № 3 и № 4 кажутся наиболее надежными, ив соответствии с тем, что я читал в других вопросах, это то, как Apple на самом деле делает это. К сожалению, в настоящее время эти методики мне не по зубам, и мне трудно понять ограниченное количество деталей.поиск в Интернете. Я пока что ничего не делал с явным рисованием.

Кто-нибудь еще реализовал это самостоятельно? Какие-нибудь примеры кода, которые вы можете предоставить, чтобы помочь мне освоить эту более продвинутую техникуs?

Спасибо!

Ответы [ 3 ]

2 голосов
/ 12 марта 2011

Есть 6-е решение.Используйте 2 UILabels.Создайте один, выделенный жирным шрифтом, с жирным текстом, и попросите его по размеру, чтобы соответствовать.Затем, как только вы выложите его, вы можете создать второе и поместить его прямо рядом с первым.

0 голосов
/ 19 марта 2011

Итак, просто чтобы закончить, я нашел 7-й вариант.:)

Я пошел с OHAttributedLabel .Я все еще не мог обернуть голову вокруг методов UIStringDrawing или переопределения drawRect в подклассе UILabel;Я думаю, что это было бы самое чистое решение.Тем не менее, OHAttributedLabel выглядит прочным, суперлегким и делает именно то, что мне нужно.

Удачи!Если кто-то найдет больше решений или ему захочется объяснить UIStringDrawing или drawRect более подробно, не стесняйтесь писать!

Обновление:

Я былиспользуя TTTAttributedLabel Мэтта Томпсона и был очень доволен этим.https://github.com/mattt/TTTAttributedLabel

0 голосов
/ 12 марта 2011

Вы должны прочитать «Руководство по программированию табличного представления для iOS», там есть раздел «Подкласс UITableViewCell», он делает именно то, что вам нужно (то есть рисует строки с различными свойствами).

...