簡體   English   中英

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。 請問有人可以幫忙嗎?

在您的示例中,您從同一個原始字符串創建了兩個不同的屬性字符串,並且您將沒有屬性的字符串傳遞給標簽文本屬性。 相反,您可以創建一個唯一的屬性字符串,並且可以將其與標簽的屬性文本屬性一起使用:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM