Swift:NSMutableAttributedString前景色未正确设置

时间:2018-09-04 13:06:44

标签: swift nsattributedstring

我需要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

这只是导致第一个字符消失。对于attributedString的打印语句如下所示(显然正确):

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

我在做什么错了?

2 个答案:

答案 0 :(得分:1)

问题是长度为1的NSRange值。对于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 ))

答案 1 :(得分:0)

编写的代码没有问题。后来我不小心覆盖了cell.label.text。哎呀