在textview中更改文本的颜色

问题描述 投票:1回答:2

我有一个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'类型的操作数

我怎样才能使这个工作?

swift textview nsattributedstring
2个回答
1
投票

你不能使用+附加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

此代码假设GoalSettingMoreDetailsSummaryGoalSettingMoreDetailsNotes的类型为NSAttributedString。如果他们只是String然后从他们创建NSAttributedString就像我用文字字符串。


0
投票

看看Prestyler。你可以写这样的东西:

Prestyler.defineRule("$", Prestyle.bold, UIColor.red)
label.attributedText = ("$My title$" + nextText).prestyled
© www.soinside.com 2019 - 2024. All rights reserved.