2016-07-28 3 views
2

Я использую unicode («\ uE43B») в UILabel, странно, что он работает в симуляторе, но не работает в реальном устройстве. Код ниже:Специальный Emoji не отображается правильно в устройстве

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

У меня есть поиск Google для \uE43B и this site говорит:

Это личный элементы код. То есть, это намеренно не назначается ни одному персонажу. Он был добавлен в Unicode в версии 1.1 и относится к блоку Private Use Area.

Но я до сих пор не понимаю, как работает тренажер, некоторые приложения, такие как wechat, также могут показывать эможи.

+0

Эта проблема только с \ uE438? – David

+0

Я так не думаю. – KudoCC

ответ

1

Возможно, вы используете собственный шрифт на своем Mac, который вы не используете на своем iPhone. Как вы заметили, это не правильная кодовая точка Unicode. Это персональный персонаж. Эти кодовые точки могут быть добавлены к шрифтам, если они того пожелают.

iOS Simulator - это просто приложение для Mac, которое включает совместимую с Mac версию UIKit. Все, что доступно на вашем Mac, будет доступно для Simulator, даже если они недоступны на устройствах iOS.

Конкретный символ, на который вы ссылаетесь, - U+1F38F (CARP STREAMER). Я не знаю, почему вы его сопоставили с U + E43B. Возможно, у вас есть азиатский шрифт, который имеет это как устаревшую точку кода (обычное использование символов личного использования).

+0

Спасибо, он работает с 'label.text = @. Emoji: \ U0001f38f"; '. Мне интересно узнать, как вы нашли U + 1F38F так быстро с неправильным юникодом и. – KudoCC

+0

Этот поиск: http://emojipedia.org/search/?q=fish –

+0

Большое спасибо! – KudoCC

Смежные вопросы