我有一个textview,它结合了几个字符串,每个字符串由一个新行分隔。每个字符串也有一个标题,我想用不同的颜色和粗体显示。
我到目前为止的代码如下:
let summaryText = "Summary \n"
let summaryAttributes = [NSAttributedString.Key.foregroundColor: UIColor.orange]
let summaryString = NSAttributedString(string: summaryText, attributes:summaryAttributes)
GoalSettingDetailsTextView.attributedText = summaryString + GoalSettingMoreDetailsSummary + "\n\n" + "Notes \n" + GoalSettingMoreDetailsNotes
在这里你可以看到我试图将“摘要”变成橙色。我还尝试将“Notes”标题显示为没有任何属性的普通字符串。这部分工作正常。但是,我收到“summaryString”错误。
错误是:
二进制运算符'+'不能应用于'NSAttributedString'和'String'类型的操作数
我怎样才能使这个工作?
你不能使用+
附加NSAttributedString
。
创建一个NSMutableAttributedString
并构建它。
let attrStr = NSMutableAttributedString(attributedString: summaryString)
attrStr.append(GoalSettingMoreDetailsSummary) // not sure what GoalSettingMoreDetailsSummary is
attrStr.append(NSAttributedString(string: "\n\nNotes \n"))
attrStr.append(GoalSettingMoreDetailsNotes) // not sure what GoalSettingMoreDetailsNotes is
GoalSettingDetailsTextView.attributedText = attrStr
此代码假设GoalSettingMoreDetailsSummary
和GoalSettingMoreDetailsNotes
的类型为NSAttributedString
。如果他们只是String
然后从他们创建NSAttributedString
就像我用文字字符串。
看看Prestyler。你可以写这样的东西:
Prestyler.defineRule("$", Prestyle.bold, UIColor.red)
label.attributedText = ("$My title$" + nextText).prestyled