Есть ли способ иметь textColor
свойство UILabel
быть двух разных UIColors
? В основном я пытаюсь сделать первый символ в UILabel
text property
greenColor
, а остальное будет blackColor
. Я хотел бы избежать использования двух разных UILabels
, потому что я могу изменить положение в тексте зеленого символа.UILabel Text with Multiple Font Colors
ответ
UILabel оленья кожа Поддержка, это свойство ...
Использование должны использовать NSAttributedString ... и использовать контроллеры для рисования NSAttributesString ...
Controller for NSAttributedString
UPDATE:
С iOS 6 вы можете сделать следующее:
label.attributedText = attributedString;
Нет, это невозможно - вам нужно рисовать самостоятельно или сочинять несколько ярлыков.
Если вы можете принять совместимость 3.2, вы можете взглянуть на NSAttributedString
.
В настоящее время невозможно, обычно вы должны использовать NSAttributedString, но для использования этого в iOS вам нужно будет свернуть собственную метку. вы можете работать над этим с помощью UIWebView, но я не люблю это делать, он кажется тяжелым.
Нет - Apple заявляет, что вы должны использовать HTML в UIWebView
, если вам нужен форматированный текст. (См. Примечание в разделе обзора UITextView API docs.)
Другой альтернативный способ - создать несколько меток с разным цветом и разложить их рядом друг с другом. Попробуйте сделать цвет фона ярлыка прозрачным. Это может быть утомительно, но должно работать.
NSAttributedStrings поддерживает смешанные шрифты, стили и цвета в одной строке, но в настоящее время не поддерживается никакими стандартными элементами управления UIKit. Тем не менее, вы должны проверить TTTAttributedLabel. Это простая, эффективная замена для UILabel, которая позволит вам легко отображать богатый текст.
Начиная с IOS 6 вы можете сделать следующее:
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:string];
[attributedString addAttribute:NSBackgroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0,3)];
[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColor blackColor] range:NSMakeRange(4,9)];
cell.label.attributedText = attributedString;
Swift 3:
extension NSMutableAttributedString {
func setColorForText(textToFind: String, withColor color: UIColor) {
let range: NSRange = self.mutableString.range(of: textToFind, options: .caseInsensitive)
if range != nil {
self.addAttribute(NSAttributedStringKey.foregroundColor, value: color, range: range)
}
}
}
func setColoredLabel() {
var string: NSMutableAttributedString = NSMutableAttributedString(string: "My label with red blue and green colored text")
string.setColorForText(textToFind: "red", withColor: UIColor.red)
string.setColorForText(textToFind: "blue", withColor: UIColor.blue)
string.setColorForText(textToFind: "green", withColor: UIColor.green)
mylabel.attributedText = string
}
Результат:
Обратитесь к этому Ques я понял, что вам нужно http://stackoverflow.com/questions/4208282/advance-search-implementation-in-iphone/4208329#4208329 – KingofBliss 2010-11-29 17:27:08
Downvoted для указания на большой репозиторий вашего кода вместо прямого ответа. – 2011-04-04 17:59:29