Несколько цветов в NSString
или NSMutableStrings
невозможно. Итак, я немного услышал о том, NSAttributedString
что было представлено в iPad SDK 3.2 (или около 3.2) и доступно на iPhone начиная с бета-версии iPhone SDK 4.0 .
Я хотел бы иметь строку, которая имеет три цвета.
Причина, по которой я не использую 3 отдельных строки NSS, заключается в том, что длина каждой из трех NSAttributedString
подстрок часто меняется, и поэтому я бы предпочел не использовать какие-либо вычисления для изменения положения 3 отдельных NSString
объектов.
Если это возможно, используя NSAttributedString
как я могу сделать следующее - (если это невозможно при использовании строки NSAttributed, как бы вы это сделали):
Edit:
Помните, что @"first"
, @"second"
и @"third"
будут заменены на другие строки в любое время. Поэтому использование жестко закодированных значений NSRange не сработает.
источник
Ответы:
При построении атрибутивных строк я предпочитаю использовать изменяемый подкласс, просто чтобы все было чище.
Тем не менее, вот как вы создаете трехцветную атрибутивную строку:
набрал в браузере. будьте осторожны
Очевидно, вы не собираетесь жестко программировать в таких диапазонах. Возможно, вместо этого вы могли бы сделать что-то вроде:
источник
NSAttributedString
. Однако есть вещи с открытым исходным кодом, такие как OHAttributedLabel .kCTForegroundColorAttributeName
а неNSForegroundColorAttributeName
.На вопрос уже дан ответ ... но я хотел показать, как добавить тень и изменить шрифт также с помощью NSAttributedString, чтобы при поиске по этой теме людям не приходилось искать.
Вот версия Swift ...
Предупреждение! Это работает для 4s.
Для 5s вы должны изменить все значения Float на Double (потому что компилятор еще не работает правильно)
Быстрое перечисление для выбора шрифта:
Swift массив для доступа к enum (необходим, потому что enum не может использовать '-'):
Swift приписывает текстовую функцию:
первое и последнее расширение, используемое для поиска диапазонов в строковом массиве:
новые цвета:
моя замена макроса:
мой производитель кнопок с атрибутивным текстом:
мой создатель UIView / UILabel с атрибутивным текстом, тенями и закругленными углами:
общая тень добавить:
расширение вида для стиля просмотра:
фактический вид загрузил функцию:
источник
Я думаю, это очень удобный способ
regular expressions
найти диапазон для применения атрибутов. Вот как я это сделал:Я искал список доступных атрибутов и не нашел их здесь и на первой странице ссылки на класс. Поэтому я решил разместить здесь информацию об этом.
Стандартные атрибуты
Приписанные строки поддерживают следующие стандартные атрибуты для текста. Если ключ отсутствует в словаре, используйте значения по умолчанию, описанные ниже.
NSAttributedString руководство по программированию
Полная ссылка на класс здесь .
источник
Это решение будет работать для любой длины
источник
Я написал помощник для добавления атрибутов легко:
https://github.com/shmidt/MASAttributes
Вы можете установить через CocoaPods также:
pod 'MASAttributes', '~> 1.0.0'
источник
Начиная с iOS 7 вы можете использовать
NSAttributedString
с синтаксисом HTML:Вы должны добавить файл "string.html" в ваш проект, и содержимое HTML может быть таким:
Теперь вы можете использовать,
NSAttributedString
как хотите, даже без HTML-файла, например:Источник
источник
Я всегда находил работу с приписанными строками невероятно долгим и утомительным процессом.
Поэтому я создал приложение Mac, которое создает весь код для вас.
https://itunes.apple.com/us/app/attributed-string-creator/id730928349?mt=12
источник
Более простое решение с атрибутом расширения строки.
Попробуйте это и посмотрите (протестировано в Swift 3 и 4)
Вот ожидаемый результат:
источник
В Swift 4:
источник
Вы можете загрузить
HTML
приписанную строкуSwift
следующим образомЧтобы загрузить
html
из файлаhttp://sketchytech.blogspot.in/2013/11/creating-nsattributedstring-from-html.html
И настройте строку в соответствии с вашим обязательным атрибутом .... следуйте этому ..
http://makeapppie.com/2014/10/20/swift-swift-using-attributed-strings-in-swift/
источник
Я сделал библиотеку, которая делает это намного проще. Проверьте ZenCopy.
Вы можете создавать объекты стиля и / или назначать им ключи для последующего использования. Как это:
Затем вы можете легко создавать строки и стилировать их и иметь параметры :)
Вы также можете легко оформить вещи с помощью регулярных выражений!
Это приведет к тому, что все слова будут обозначены символом «@» перед стилем «token» (например, @jpmcglone)
Мне все еще нужно заставить его работать, все, что
NSAttributedString
он может предложить, но я думаюfontName
,fontSize
и цвет покрывает большую часть этого. Ожидайте много обновлений в ближайшее время :)Я могу помочь вам начать с этим, если вам нужно. Также ищите отзывы, так что если это облегчит вашу жизнь, я бы сказал, что миссия выполнена.
источник
источник
Чтобы решить такие проблемы, я создал библиотеку в Swift, которая называется Atributika.
Вы можете найти его здесь https://github.com/psharanda/Atributika
источник
Swift 4
Список атрибутов смотрите здесь NSAttributedStringKey на Apple Docs
источник
Супер простой способ сделать это.
Для более подробной информации нажмите здесь; https://github.com/iOSTechHub/AttributedString
источник