NSMutableAttributedString 在 ViewController 中不起作用,但在 Playgrou



我对这段代码有问题,我不知道我做错了什么。我首先在操场上尝试了所有东西,它就像一个魅力。将其分配给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

相关内容

最新更新