2016-07-28 62 views
2

UILabel使用unicode(「\ uE43B」),奇怪的是它工作在模擬器,但沒有作品在真實設備。該代碼是下面:特殊的表情符號不正確顯示在設備

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, size.width, size.height)]; 
[self.view addSubview:label]; 
label.text = @"The emoji is:\uE43B"; 
label.textAlignment = NSTextAlignmentCenter; 

結果在模擬器運行:

enter image description here

當我在我的設備(iPhone6 9.3.2)運行它,它示出了一個矩形的字符。

enter image description here

我有谷歌搜索\uE43Bthis site說:

這是一個私用碼點。也就是說,它故意沒有分配給任何角色。它在版本1.1中添加到Unicode中,屬於塊私密使用區域。

但我還是不明白模擬器是怎麼工作的,有些應用如微信也可以顯示錶情符號。

+0

此問題僅適用於\ uE438? – David

+0

我不這麼認爲。 – KudoCC

回答

1

您可能正在使用不使用你的iPhone Mac上的自定義字體。如您所知,這不是一個適當的Unicode代碼點。這是一個私人使用的角色。這些代碼點可以添加到字體,如果他們的願望。

的iPhone模擬器只是一臺Mac應用程序,包括UIKit中的Mac兼容的版本。即使在iOS設備上不可用,您的Mac上可用的東西也可供Simulator使用。

你引用的特定字符是U+1F38F (CARP STREAMER)。 我不知道你爲什麼把它映射到U + E43B。可能你有一個亞洲字體,這是一個遺留代碼點(私人使用字符的常見用法)。

+0

謝謝,它適用於'label.text = @「表情符號是:\ U0001f38f」;'。我很想知道你是如何快速找到U + 1F38F的,這個錯誤的unicode和a。 – KudoCC

+0

此搜索:http://emojipedia.org/search/?q=fish –

+0

非常感謝! – KudoCC

相關問題