我正在使用NSAttributedString为来自API的文本的某些部分(在Twitter上认为“@mention”)着色.
API为我提供了文本和一组实体,这些实体表示应该着色的文本部分(或链接,标签等).
但有时,由于表情符号,颜色会被抵消.
例如,使用此文本:
“@ericd Some text. @apero”
API给出:
[
{
“text” : “ericd”,
“len” : 6,
“pos” : 0
},
{
“text” : “apero”,
“pos” : 18
}
]
我使用NSRange成功转换为NSAttributedString:
for m in entities.mentions { let r = NSMakeRange(m.pos,m.len) myAttributedString.addAttribute(NSForegroundColorAttributeName,value: someValue,range: r) }
我们看到“pos”:18是正确的,这是“@apero”开始的地方.正如预期的那样,彩色部分是“@ericd”和“@apero”.
但是当在文本中使用表情符号的某些特定组合时,API不能很好地转换为NSATtributedString,颜色是偏移的:
“@ericd Some text.