UILabel для отображения эмоций Emoji, а не их значений Unicode \ ueXXXX - PullRequest
0 голосов
/ 30 сентября 2011

Я получаю значения с сервера в формате XML, сервер отправляет следующую строку: «Это хорошая строка с Emoji \ ue056 \ ue056 \ ue057 \ ue057 \ ue056 \ ue056"

Я изо всех сил старался, чтобы моя UILabel отображала значки эмодзи, а не следующие

\ ue056 \ ue056 \ ue056 \ ue057 \ ue057 \ ue056 \ ue056

Я пытался

[chatText setText:[chatString stringByReplacingOccurrencesOfString:@"\\\\u" withString:@"\\u"]];

Не так много удачи. В отчаянии я сделал следующее:

[chatText setText:[[chatString cStringUsingEncoding:NSNonLossyASCIIStringEncoding] stringByReplacingOccurrencesOfString:@"\\\\u" withString:@"\\u"]];

Примечание. Назначение следующей строки помогает:

[chatText setText:@"\ue056\ue056\ue056\ue057\ue057\ue056\ue056"];

Ответы [ 2 ]

1 голос
/ 30 сентября 2011

Похоже, вам нужно пройти через каждый из символов и использовать stringWithFormat:@"%C" для каждого из символов эмодзи:

// Loop through string by characters, and then do something like:
// NSString *emoji = [NSString stringWithFormat:@"%C", 16-bit Unicode character (unichar) here];
NSString *emoji = [NSString stringWithFormat:@"%C", 0xe415];
chatText.text = [chatText.text stringByAppendingString:emoji];

Проверьте Спецификаторы формата строки

0 голосов
/ 01 октября 2011

Я создал класс stringHandler, который содержит следующую функцию для решения этой проблемы, которая в значительной степени решила мою проблему:

+ (NSString *) mapEmojiFromServer:(NSString *) inString
{
    inString = [inString stringByReplacingOccurrencesOfString:@"\\" withString:@""];
    inString = [inString stringByReplacingOccurrencesOfString:[@"ue001" lowercaseString] withString:@"\ue001"];
.
.
.

    return inString;
}

Я не заметил проблемы с производительностью, за исключением IDE, которая сходит с ума при навигации и прокрутке страницы, содержащей эту функцию 2000 строк

Большое спасибо за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...