swift – NSAttributedString和emojis:位置和长度问题

前端之家收集整理的这篇文章主要介绍了swift – NSAttributedString和emojis:位置和长度问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用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.

猜你在找的Swift相关文章