4
我有設置一個NSAttributedString大膽的方法:NSLocalizedString集子大膽
func setBold(text: String) -> NSMutableAttributedString {
guard let font = UIFont.CustomNormalBoldItalic() else {
fatalError("font not found")
}
let string = NSMutableAttributedString(string:"\(text)", attributes: [NSFontAttributeName : font])
self.setAttributedString(string)
return self
}
,這是它是如何調用,它正常工作:
let formattedString = NSMutableAttributedString()
formattedString.setBold("Your text here")
然而我正在嘗試將一個NSLocalizedString的子字符串的文本設置爲粗體。所以我想嘗試它像這樣:
let formattedString = NSMutableAttributedString()
return NSAttributedString(string: String.localizedStringWithFormat(
NSLocalizedString("message", comment: ""),
formattedString.setBold(NSLocalizedString("message.day", comment: "")),
NSLocalizedString("message.time", comment: "")
))
取而代之的是「今天開始在晚上10點」,它提供了以下的輸出:
Today{
NSFont = "<UICTFont: 0x7fb75d4f1330> font-family: \"CustomText-MediumItalic\"; font-weight: normal; font-style: italic; font-size: 14.00pt";
} starting at 10pm {
}
誰能告訴我在哪裏,我錯了或我如何解決這個問題?我有另一種方法的原因是因爲我有很多LocalizedStrings來設置粗體,並認爲這可能是一個簡單的解決方案。開放給不涉及大量重複/代碼行的其他想法/解決方案。
我會去創建3個NSAttributedString(每個翻譯一個),並附加(第一個必須是NSMutableAttributedString)它們都在最後。你可以選擇你想要設置爲粗體的那一個。 – Larme
並非所有的語言都會將這3個部分放在相同的順序中,或者使用相同的標點符號... – Wain
@Wain在這種情況下,它是兩個部分或子字符串,即%@始於%@。這是一個相當簡單的短語,我在其他語言的匹配英語,並具有相同的標點符號 – coderdojo