String 如何在swift中为很长字符串中的所有字符着色?

String 如何在swift中为很长字符串中的所有字符着色?,string,swift,nsmutableattributedstring,String,Swift,Nsmutableattributedstring,我需要像这样给字符串上色“atcatagcatggcatagcataggattcgat”,其中每个“a”、“t”、“c”、“g”都有自己的颜色。我可以在一个范围内使用nsmutableAttributeString和.addAttribute,因此首先,我可以找到作为字符串的字符的索引范围,然后为它们着色。我想在编辑字符串时,我可以通过NSNotificationCenter使用NSTextDidChangeNotification动态重新计算“a”、“t”、“c”、“g”的所有索引。我想知道是

我需要像这样给字符串上色“atcatagcatggcatagcataggattcgat”,其中每个“a”、“t”、“c”、“g”都有自己的颜色。我可以在一个范围内使用nsmutableAttributeString和.addAttribute,因此首先,我可以找到作为字符串的字符的索引范围,然后为它们着色。我想在编辑字符串时,我可以通过NSNotificationCenter使用NSTextDidChangeNotification动态重新计算“a”、“t”、“c”、“g”的所有索引。我想知道是否有其他方法可以给字符串着色,因为对于非常长的字符串(数百万或几十万个字符),上述方法看起来不是一种快速的方法。也许可以在textview窗口的框架中为字符串的唯一可见部分上色?

我会枚举每个字符,并使用带有键“a”、“t”等的字典,其值为NSColor,对应于应用样式。不确定有没有更快的方法。但是实际上,只改变可见字符可以优化整个事情。@Larme所以,如果着色的目标只是可见部分,我们应该在可见区域的左上角得到第一个字符的开始索引,在该区域的右下角得到最后一个字符的开始索引。而且,问题是怎么做。或者,在.selectedRange()中使用并将其应用于所选的整个区域(没有明显的选择效果)?我不知道OS X开发(仅限iOS),但可能有:?@Larme感谢链接!!看起来很有希望,我会努力的。