Swift: NSMutableAttributedString foregroundColor установлен неправильно - PullRequest
0 голосов
/ 04 сентября 2018

Мне нужно, чтобы первый символ моей UILabel был другого цвета, чем остальная часть этикетки. Я использую следующий код:

        let attributedString: NSMutableAttributedString = NSMutableAttributedString(string: cell.label.text!)
        attributedString.addAttribute(NSAttributedStringKey.foregroundColor, value: UIColor.red, range: NSRange(location: 0, length: 1))
        cell.label.attributedText = attributedString

Это просто вызывает исчезновение первого персонажа. Оператор печати для attribuString выглядит следующим образом (по-видимому, правильно):

■{NSForegroundColor = "UIExtendedSRGBColorSpace 1 0 0 1";} restOfText{}

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Код как написано работает без проблем. Я случайно переписал cell.label.text позже. Упс

0 голосов
/ 04 сентября 2018

Проблема заключается в значении NSRange с длиной 1. Для строк Swift используйте выделенный инициализатор NSRange, принимающий диапазон String.Index и целевую строку

let string = cell.label.text!
let attributedString: NSMutableAttributedString = NSMutableAttributedString(string: string)
attributedString.addAttribute(NSAttributedStringKey.foregroundColor, value: UIColor.red, range: NSRange(...string.startIndex, in: string ))
...