Проблема, с которой я столкнулся, заключается в том, что я хочу иметь возможность изменять textColor определенного текста в TextView. Я использую объединенную строку и просто хочу, чтобы строки, которые я добавляю в текст TextView. Похоже, что я хочу использовать именно это NSMutableAttributedString
, но я не нахожу никаких ресурсов о том, как использовать это в Swift. Пока что у меня есть что-то вроде этого:
let string = "A \(stringOne) with \(stringTwo)"
var attributedString = NSMutableAttributedString(string: string)
textView.attributedText = attributedString
Отсюда я знаю, что мне нужно найти диапазон слов, для которых нужно изменить свой textColor, а затем добавить их в строку с атрибутами. Что мне нужно знать, так это как найти правильные строки из attributedString, а затем изменить их textColor.
Поскольку у меня слишком низкий рейтинг, я не могу ответить на свой вопрос, но вот ответ, который я нашел
Я нашел свой ответ, переведя из перевода некоторого кода из
Изменить атрибуты подстрок в NSAttributedString
Вот пример реализации на Swift:
let string = "A \(stringOne) and \(stringTwo)"
var attributedString = NSMutableAttributedString(string:string)
let stringOneRegex = NSRegularExpression(pattern: nameString, options: nil, error: nil)
let stringOneMatches = stringOneRegex.matchesInString(longString, options: nil, range: NSMakeRange(0, attributedString.length))
for stringOneMatch in stringOneMatches {
let wordRange = stringOneMatch.rangeAtIndex(0)
attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.nameColor(), range: wordRange)
}
textView.attributedText = attributedString
Поскольку я хочу изменить textColor нескольких строк, я сделаю вспомогательную функцию для обработки этого, но это работает для изменения textColor.
источник
Ответы:
Я вижу, вы несколько ответили на вопрос, но чтобы дать более сжатый способ без использования регулярного выражения для ответа на вопрос заголовка:
Чтобы изменить цвет длины текста, вам нужно знать начальный и конечный индексы символов, которые должны быть окрашены в строку, например
Затем вы конвертируете в атрибутивную строку и используете 'add attribute' с NSForegroundColorAttributeName:
Список дополнительных стандартных атрибутов, которые вы можете установить, можно найти в документации Apple.
источник
main_string
,string_to_color
иrange
никогда не мутировали. Рассмотрите возможность их изменения наlet
постоянные?SWIFT 5
SWIFT 4.2
источник
Обновление Swift 2.1:
self.helpText
этоUILabel
розетка.источник
Swift 4.2 и Swift 5 раскрашивают части веревки.
Очень простой способ использовать NSMutableAttributedString при расширении String. Это также можно использовать для окрашивания более одного слова во всей строке.
Добавьте новый файл для расширений, File -> New -> Swift File с именем, например. "NSAttributedString + TextColouring" и добавьте код
Теперь вы можете использовать глобально на любом контроллере просмотра, который хотите:
источник
Ответ уже дан в предыдущих сообщениях, но у меня есть другой способ сделать это
Swift 3x:
Надеюсь, это кому-нибудь поможет!
источник
Ответ Криса мне очень помог, поэтому я использовал его подход и превратил его в функцию, которую можно использовать повторно. Это позволило мне назначить цвет подстроке, а остальной части строки - другим цветом.
источник
Swift 4.1
например, если вы хотите изменить шрифт в NavBar:
источник
Вы можете использовать это расширение, которое я тестирую
быстрый 4.2
источник
Swift 2.2
источник
.CGColor
.Самый простой способ сделать метку с другим стилем, таким как цвет, шрифт и т. Д., - это использовать свойство «Attributed» в Attributes Inspector. Просто выберите часть текста и измените ее, как хотите
источник
На основании ответов до того, как я создал расширение строки
Вы можете передать атрибуты текста в метод
Звоните так
источник
Swift 4.1
Я изменил это в Swift 3
И это в Swift 4.0
в Swift 4.1
Работает отлично
источник
быстрый 4.2
источник
Для всех, кто ищет « Применение определенного цвета к нескольким словам в тексте », мы можем сделать это с помощью NSRegularExpression.
Ссылка для справки: https://gist.github.com/aquajach/4d9398b95a748fd37e88
источник
источник
С помощью этой простой функции вы можете назначить текст и выделить выбранное слово.
Вы также можете изменить UITextView на UILabel и т. Д.
источник
Чтобы изменить цвет цвета шрифта, сначала выберите атрибут с атрибутом вместо простого, как на изображении ниже.
Затем вам нужно выделить текст в поле с атрибутами, а затем нажать кнопку цвета с правой стороны выравнивания. Это изменит цвет.
источник
Вы можете использовать этот метод. Я реализовал этот метод в своем общем служебном классе для глобального доступа.
источник
Если вы используете Swift 3x и UITextView, возможно, NSForegroundColorAttributeName не будет работать (у меня это не сработало, какой бы подход я ни пробовал).
Итак, покопавшись, я нашел решение.
источник
Супер простой способ сделать это.
Для получения более подробной информации нажмите здесь: https://github.com/iOSTechHub/AttributedString
источник
Вам нужно изменить параметры textview, а не параметры атрибутированной строки
источник
Пожалуйста, проверьте cocoapod Prestyler :
источник
}
источник
Вы можете использовать как простое расширение
источник