2010-11-29 1 views
3

Есть ли способ иметь textColor свойство UILabel быть двух разных UIColors? В основном я пытаюсь сделать первый символ в UILabeltext propertygreenColor, а остальное будет blackColor. Я хотел бы избежать использования двух разных UILabels, потому что я могу изменить положение в тексте зеленого символа.UILabel Text with Multiple Font Colors

ответ

4

UILabel оленья кожа Поддержка, это свойство ...

Использование должны использовать NSAttributedString ... и использовать контроллеры для рисования NSAttributesString ...

Controller for NSAttributedString

UPDATE:

С iOS 6 вы можете сделать следующее:

label.attributedText = attributedString; 
+1

Обратитесь к этому Ques я понял, что вам нужно http://stackoverflow.com/questions/4208282/advance-search-implementation-in-iphone/4208329#4208329 – KingofBliss 2010-11-29 17:27:08

+1

Downvoted для указания на большой репозиторий вашего кода вместо прямого ответа. – 2011-04-04 17:59:29

0

Нет, это невозможно - вам нужно рисовать самостоятельно или сочинять несколько ярлыков.

Если вы можете принять совместимость 3.2, вы можете взглянуть на NSAttributedString.

0

В настоящее время невозможно, обычно вы должны использовать NSAttributedString, но для использования этого в iOS вам нужно будет свернуть собственную метку. вы можете работать над этим с помощью UIWebView, но я не люблю это делать, он кажется тяжелым.

1

Нет - Apple заявляет, что вы должны использовать HTML в UIWebView, если вам нужен форматированный текст. (См. Примечание в разделе обзора UITextView API docs.)

1

Другой альтернативный способ - создать несколько меток с разным цветом и разложить их рядом друг с другом. Попробуйте сделать цвет фона ярлыка прозрачным. Это может быть утомительно, но должно работать.

2

NSAttributedStrings поддерживает смешанные шрифты, стили и цвета в одной строке, но в настоящее время не поддерживается никакими стандартными элементами управления UIKit. Тем не менее, вы должны проверить TTTAttributedLabel. Это простая, эффективная замена для UILabel, которая позволит вам легко отображать богатый текст.

7

Начиная с 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; 
1

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 
    } 

Результат:

enter image description here