NSMutableAttributedString 在 ViewController 中不工作但在 Playground 中工作
NSMutableAttributedString not working in ViewController but works in Playground
这段代码有问题,我不知道自己做错了什么。我首先尝试了 Playground 中的所有内容,它非常有效。将其分配给 UILabel 它只是不起作用。
let nameSurname = "\(postAddSetup.nameSurname.text!)"
let checkIn = " - \(setLocationPlace), \(setLocationCity)"
var string = postAddSetup.nameSurname.text
string = "\(nameSurname) \(checkIn)"
let boldUsername = NSMutableAttributedString(string: string!)
boldUsername.addAttribute(NSFontAttributeName, value: UIFont.boldSystemFont(ofSize: 14), range: (string! as NSString).range(of: nameSurname))
let normalCheckIn = NSMutableAttributedString(string: string!)
normalCheckIn.addAttribute(NSFontAttributeName, value: UIFont.systemFont(ofSize: 11), range: (string! as NSString).range(of: checkIn))
normalCheckIn.addAttribute(NSForegroundColorAttributeName, value: UIColor.darkGray, range: (string! as NSString).range(of: checkIn))
print(string!)
postAddSetup.nameSurname.text = string!
我实际上有一个从 2 个字符串获取文本的标签。我想用不同的颜色和字体显示那些字符串。它在 Playground 中有效,但在 ViewController 中无效。有人可以帮忙吗?
在您的示例中,您从同一个原始字符串创建了两个不同的属性字符串,并且您将不带属性的字符串传递给标签文本 属性。
相反,您可以创建一个唯一的属性字符串,您可以将它与标签的 attributedText 属性 一起使用:
var string = postAddSetup.nameSurname.text
string = "\(nameSurname) \(checkIn)"
let attributedString = NSMutableAttributedString(string: string!)
attributedString.addAttribute(NSFontAttributeName, value: UIFont.boldSystemFont(ofSize: 14), range: (string! as NSString).range(of: nameSurname))
attributedString.addAttribute(NSFontAttributeName, value: UIFont.systemFont(ofSize: 11), range: (string! as NSString).range(of: checkIn))
attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.darkGray, range: (string! as NSString).range(of: checkIn))
postAddSetup.nameSurname.attributedText = attributedString
这段代码有问题,我不知道自己做错了什么。我首先尝试了 Playground 中的所有内容,它非常有效。将其分配给 UILabel 它只是不起作用。
let nameSurname = "\(postAddSetup.nameSurname.text!)"
let checkIn = " - \(setLocationPlace), \(setLocationCity)"
var string = postAddSetup.nameSurname.text
string = "\(nameSurname) \(checkIn)"
let boldUsername = NSMutableAttributedString(string: string!)
boldUsername.addAttribute(NSFontAttributeName, value: UIFont.boldSystemFont(ofSize: 14), range: (string! as NSString).range(of: nameSurname))
let normalCheckIn = NSMutableAttributedString(string: string!)
normalCheckIn.addAttribute(NSFontAttributeName, value: UIFont.systemFont(ofSize: 11), range: (string! as NSString).range(of: checkIn))
normalCheckIn.addAttribute(NSForegroundColorAttributeName, value: UIColor.darkGray, range: (string! as NSString).range(of: checkIn))
print(string!)
postAddSetup.nameSurname.text = string!
我实际上有一个从 2 个字符串获取文本的标签。我想用不同的颜色和字体显示那些字符串。它在 Playground 中有效,但在 ViewController 中无效。有人可以帮忙吗?
在您的示例中,您从同一个原始字符串创建了两个不同的属性字符串,并且您将不带属性的字符串传递给标签文本 属性。 相反,您可以创建一个唯一的属性字符串,您可以将它与标签的 attributedText 属性 一起使用:
var string = postAddSetup.nameSurname.text
string = "\(nameSurname) \(checkIn)"
let attributedString = NSMutableAttributedString(string: string!)
attributedString.addAttribute(NSFontAttributeName, value: UIFont.boldSystemFont(ofSize: 14), range: (string! as NSString).range(of: nameSurname))
attributedString.addAttribute(NSFontAttributeName, value: UIFont.systemFont(ofSize: 11), range: (string! as NSString).range(of: checkIn))
attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.darkGray, range: (string! as NSString).range(of: checkIn))
postAddSetup.nameSurname.attributedText = attributedString