1. 程式人生 > >iOS之旅--swift emoji 處理

iOS之旅--swift emoji 處理

Swift中使用NSAttributedString展示Emoji遇到的坑

引:新的功能模組由Swift3開發,開發階段由於沒有測試emoji表情,前幾天發現這個bug,當發出的文字中帶有emoji表情的時候,顯示會出現問題,如圖1:

其實展現的時候,應該是這樣的,如圖2:

圖1:
圖1

圖2:
圖2

根據上面出現的問題,開始尋找答案,從編碼這個思路找答案,會發現可以部分解決問題,但是不能完全解決問題。後來從Swift的字串長度計算得到答案,在Swift中字串的長度是用String.characters.count得出的,當中間有表情的時候,則會計算錯誤。下面給出測試例子:
測試例子

由此我們可以看出當有emoji的時候,計算長度是有誤差的,當我們使用NSAttributedString的時候,會用到addAttribute(String, value: Any, range: NSRange)函式,計算range的時候就會用到長度計算,如果使用String.characters.count,則結果很顯然就是錯誤的。