Ich habe eine Methode, die ein NSAttributedString setzt fett sein:Set Teil von NSLocalizedString fett sein
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
}
Und das ist, wie es heißt, das funktioniert in der Regel:
let formattedString = NSMutableAttributedString()
formattedString.setBold("Your text here")
jedoch Ich versuche, den Text einer Teilzeichenfolge eines NSLocalizedString fett zu setzen. So würde ich versuchen, es wie so:
let formattedString = NSMutableAttributedString()
return NSAttributedString(string: String.localizedStringWithFormat(
NSLocalizedString("message", comment: ""),
formattedString.setBold(NSLocalizedString("message.day", comment: "")),
NSLocalizedString("message.time", comment: "")
))
Statt „um 10 Uhr beginnt Heute“ zu sein, gibt es die folgende Ausgabe:
Today{
NSFont = "<UICTFont: 0x7fb75d4f1330> font-family: \"CustomText-MediumItalic\"; font-weight: normal; font-style: italic; font-size: 14.00pt";
} starting at 10pm {
}
Kann mir jemand sagen, wo ich falsch gehe oder Wie kann ich das beheben? Der Grund, warum ich eine andere Methode habe, ist, weil ich viele LocalizedStrings fett gesetzt habe und dachte, dies könnte eine einfache Lösung sein. Offen für andere Ideen/Lösungen, die nicht viele Wiederholungen/Codezeilen beinhalten.
ich durch die Schaffung von 3 NSAttributedString (eine für jede Übersetzung) gehen würde, und fügen Sie (die erste hat ein NSMutableAttributedString sein), sie alle am Ende. Sie können auswählen, welche Sie fett oder nicht setzen möchten. – Larme
Nicht alle Sprachen werden die 3 Teile in der gleichen Reihenfolge oder mit der gleichen Interpunktion setzen ... – Wain
@Wain In diesem Fall sind es zwei Teile oder Unterstrings, d. H.% @ Beginnend bei% @. Es ist eine ziemlich einfache Phrase und was ich in anderen Sprachen habe, entspricht dem Englisch und hat die gleiche Interpunktion – coderdojo