Swift 更改文本视图中文本的颜色

Swift 更改文本视图中文本的颜色,swift,textview,nsattributedstring,Swift,Textview,Nsattributedstring,我有一个textview,它组合了几个字符串,每个字符串由一个新行分隔。每个字符串也有一个标题,我想用不同的颜色和粗体显示 我目前掌握的守则如下: let summaryText = "Summary \n" let summaryAttributes = [NSAttributedString.Key.foregroundColor: UIColor.orange] let summaryString = NSAttributedString(string: summaryText, attr

我有一个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

创建一个
nsmutableAttributeString
并构建它

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
此代码假定
goalsettingmoretailssummary
goalsettingmoretailssnotes
属于
NSAttributedString
类型。如果它们只是
String
,那么就从它们创建
NSAttributedString
,就像我对文本字符串所做的那样。

看看。你可以这样写:

Prestyler.defineRule("$", Prestyle.bold, UIColor.red)
label.attributedText = ("$My title$" + nextText).prestyled

使用NSMutableAttributeString及其append属性。