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来设置粗体,并认为这可能是一个简单的解决方案.对不涉及大量重复/代码行的其他想法/解决方案开放.
解决方法 我只是创建外部字符串HTML并让AttributedString处理繁重的工作.这是迅速的3,但迅速的2.3应该是直截了当的.还有一些可选的处理要添加,但你得到了它的要点.// samples so I don't have to put a string resource in my playground,you// Could just as easily pull these from NSLocalizedStringlet format = "<b>%1$@</b> starting at <b>%2$@</b>"let day = "Today"let time = "10 PM"let raw = String(format:format,day,time)let attr = AttributedString( HTML: raw.data(using: .utf8)!,options: [NSdocumentTypedocumentAttribute:NSHTMLTextdocumentType],documentAttributes:nil)!总结
以上是内存溢出为你收集整理的swift – 将NSLocalizedString的子字符串设置为粗体全部内容,希望文章能够帮你解决swift – 将NSLocalizedString的子字符串设置为粗体所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)