Как можно было бы включить как жирный, так и не жирный текст в uiLabel?
Я бы предпочел не использовать UIWebView. Я также читал, что это возможно с помощью NSAttributedString, но я понятия не имею, как это использовать. Любые идеи?
Apple достигает этого в нескольких своих приложениях; Примеры скриншотов:
Спасибо! - Дом
ios
objective-c
swift
uilabel
nsattributedstring
DomMaiocchi
источник
источник
Ответы:
Обновить
В Swift нам не приходится иметь дело со старым материалом iOS5, кроме того, синтаксис короче, поэтому все становится действительно простым:
Swift 5
Свифт 3
Использование:
Бонус: Интернационализация
Некоторые люди говорили о интернационализации. Я лично думаю, что это выходит за рамки этого вопроса, но в учебных целях я так и сделал бы
Результат (при условии, что доступны английские и японские Localizable.strings)
Предыдущий ответ для iOS6 и позже (Objective-C все еще работает):
В iOS6
UILabel
,UIButton
,UITextView
,UITextField
, поддержка приписывала строки , которые означают , что мы не должны создаватьCATextLayer
S в качестве нашего получателя для приписываемых строк. Кроме того, чтобы создать приписанную строку, нам больше не нужно играть с CoreText :) У нас есть новые классы в obj-c Foundation.framework likeNSParagraphStyle
и другие константы, которые облегчат нашу жизнь. Ура!Итак, если у нас есть эта строка:
Нам нужно только создать приписанную строку:
Существует несколько хороших вводных сообщений в блоге здесь из парней в invasivecode , объясняющих с большим количеством примеров использования
NSAttributedString
, обратите внимание на «Введение в NSAttributedString для IOS 6» и «приписывали строк для прошивкой с помощью Interface Builder» :)PS: Над кодом он должен работать, но он был скомпилирован мозгами. Я надеюсь, что этого достаточно :)
Старый ответ для iOS5 и ниже
Используйте CATextLayer с NSAttributedString! намного легче и проще, чем 2 UILabels. (iOS 3.2 и выше)
Пример.
Не забудьте добавить каркас QuartzCore (необходимый для CALayers) и CoreText (необходимый для приписанной строки).
Ниже приведен пример добавления подслоя на панель инструментов контроллера навигации. а-ля Mail.app в iPhone. :)
В этом примере у меня есть только два разных типа шрифта (полужирный и обычный), но вы также можете иметь разный размер шрифта, разный цвет, курсив, подчеркнутый и т. Д. Посмотрите на строковые ключи атрибутов NSAttributedString / NSMutableAttributedString и CoreText .
Надеюсь, поможет
источник
[NSDictionary dictionaryWithObjectsAndKeys: boldFont, NSFontAttributeName, foregroundColor, NSForegroundColorAttributeName, nil]
становится@{ NSFontAttributeName: boldFont, NSForegroundColorAttributeName: foregroundColor }
.{
), а не квадратные скобки ([
).Попробуйте категорию на UILabel:
Вот как это используется:
А вот и категория
UILabel + Boldify.h
UILabel + Boldify.m
Обратите внимание, что это будет работать только в iOS 6 и более поздних версиях. Это будет просто игнорироваться в iOS 5 и более ранних версиях.
источник
@{NSFontAttributeName:[UIFont boldSystemFontOfSize:self.font.pointSize]}
я upvoted[UIFont boldSystemFontOfSize:self.font.pointSize]
TO[UIFont fontWithName:self.font.fontName size:self.font.pointSize]
Это легко сделать в Интерфейсном Разработчике :
1) сделать UILabel Attributed в Атрибутах Инспектора
2) выделите часть фразы, которую хотите выделить жирным шрифтом
3) изменить его шрифт (или жирный шрифт того же шрифта) в селекторе шрифтов
Вот и все!
источник
Есть категория, основанная на категории bbrame. Он работает аналогично, но позволяет вам выделить
UILabel
несколько раз с кумулятивными результатами.UILabel + Boldify.h
UILabel + Boldify.m
С этими исправлениями вы можете использовать его несколько раз, например:
приведет к: « Обновлено: 2012/10/14 21:59 вечера ».
источник
Это сработало для меня:
Для версии Swift: смотрите здесь
источник
Я принял ответ Безумного Йогурта на расширения Свифта.
Может быть, между Range и NSRange нет хорошего преобразования, но я не нашел ничего лучшего.
источник
boldSubstring(_:)
для ,var range = text.string.range(of: substr, options: .caseInsensitive)
чтобы сделать строки с различной капитализацией также выделена жирным шрифтом.Проверьте TTTAttributedLabel . Это вставная замена для UILabel, которая позволяет смешивать шрифт и цвета в одной метке, устанавливая NSAttributedString в качестве текста для этой метки.
источник
В этом случае вы можете попробовать,
источник
Чтобы сделать текст жирным, а также подчеркивание в UILabel. Просто добавьте следующие строки в ваш код.
источник
Используйте код ниже. Я надеюсь, что это поможет вам.
источник
Свифт 4:
источник
Надеюсь, что это будет соответствовать вашим потребностям. Укажите строку для обработки в качестве входных данных и укажите слова, которые должны быть выделены жирным шрифтом / цветом в качестве входных данных.
Спасибо. Удачного кодирования.
источник
Нет необходимости в NSRange со следующим кодом, который я только что реализовал в своем проекте (в Swift):
источник
Если вы хотите упростить использование атрибутных строк, попробуйте использовать Attributed String Creator, который сгенерирует для вас код. https://itunes.apple.com/us/app/attributed-string-creator/id730928349
источник