Таким образом, метод, который я использовал в Swift 2, больше не работает из-за изменений в Swift 3, в отношении индексов и диапазонов строк. Раньше у меня былSwift 3: Как применить атрибуты к частям строки
func configureLabel(defaultColor: UIColor, highlightColor: UIColor, boldKeyText: Bool) {
if let index = self.text?.characters.indexOf(Character("|")) {
self.text = self.text!.stringByReplacingOccurrencesOfString("|", withString: "")
let labelLength:Int = Int(String(index))! // Now returns nil
var keyAttr: [String:AnyObject] = [NSForegroundColorAttributeName: highlightColor]
var valAttr: [String:AnyObject] = [NSForegroundColorAttributeName: defaultColor]
if boldKeyText {
keyAttr[NSFontAttributeName] = UIFont.systemFontOfSize(self.font.pointSize)
valAttr[NSFontAttributeName] = UIFont.systemFontOfSize(self.font.pointSize, weight: UIFontWeightHeavy)
}
let attributeString = NSMutableAttributedString(string: self.text!)
attributeString.addAttributes(keyAttr, range: NSRange(location: 0, length: (self.text?.characters.count)!))
attributeString.addAttributes(valAttr, range: NSRange(location: 0, length: labelLength))
self.attributedText = attributeString
}
}
В принципе я был бы в состоянии взять строку как «Имя: | Gary Oak» и есть все детали до и после | персонаж должен быть разных цветов или сделать его частью жирным шрифтом, но строка, о которой я прокомментировал выше, больше не возвращает значение, которое впоследствии прерывает все остальное. Есть идеи, как это сделать?