iOS Swift - 将属性应用于文本视图而不替换整个文本

时间:2017-02-08 01:02:12

标签: ios swift3 uitextview nsmutableattributedstring

我有一个TextView,在其中我选择了一些文本并成功地将属性应用于所选文本。

使用所需更改更新NSMutableAttributedString后,我将使用TextView并更新其属性文本:

textView.attributedText = NSMutableAttributedStringText // pseudo-example

但是这种归属取代了文本视图的整个文本(保留了c的先前属性);

有没有办法只更新textView.attributedText更改,而不是每次更改时都替换整个文本?

1 个答案:

答案 0 :(得分:1)

我本周早些时候刚刚做过这个。

创建attributedText的可变副本,更新可变副本,创建更新字符串的不可变副本。

guard let text = textView.attributedText?.mutableCopy() as? NSMutableAttributedString else { return }
text.addAttribute(NSForegroundColorAttributeName, value: color, range: selectedRange)
textView.attributedText = text.copy() as? NSAttributedString