He dedicado mucho tiempo tratando de hacer lo mismo. Su mejor opción es reemplazar los valores Unicode para los emoji en su NSString, por ejemplo. \ uE100 etc. con una cadena de marcador de posición. Puede reemplazar las codificaciones de emoji con una etiqueta HTML y usar UIWenViews o DTCoreText para dibujar la imagen en línea. yo he hecho esto, funciona también, pero será un poco lento
Aquí es un poco de arranque (especialmente si desea mostrar esta etiqueta en vistas de tabla.):
Hacer un diccionario con UIImages como objetos de marcador de posición y cadenas como claves:
self.emoticonDict = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"happyEmoticon.png", @":)",
@"sadEmoticon.png", @":(",
@"testImg.png", @"\uE100",
nil];
__block NSString *text1 = [NSString stringWithFormat:@"<html><p>%@</p></html>",text];
[self.emoticonDict enumerateKeysAndObjectsUsingBlock: ^(id key, id obj, BOOL *stop) {
text1 = [text1 stringByReplacingOccurrencesOfString:key withString:[NSString stringWithFormat:@"<img height= 15 width= 15 src=\"%@\">",obj]];
}];
usted puede en este punto de carga este código HTML en un UIWebView y usted tendrá lo que quiere.
[myWebView loadData:_htmlData MIMEType:@"text/html" textEncodingName:@"utf-8" baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]];//do create the webview first
Si la velocidad lenta de un UIWebView es una preocupación, puede leer más adelante. En cualquier caso, mira la nota hacia el final de esta respuesta.
Para crear un DTAttributedLabel, hacemos lo siguiente: En primer lugar se construye un NSattributedString utilizando el DTHTMLAttributedStringBuilder:
NSAttributedString *temp = [[[DTHTMLAttributedStringBuilder alloc] initWithHTML:text1
options:@{
DTDefaultFontFamily: @"Helvetica",
DTDefaultFontSize:@15,};
documentAttributes:nil]
generatedAttributedString];
continuación, puede utilizar una instancia DTAttributedLabel para mostrar temp.
self.tempLabel.attributedString = temp;//create a DTAttributedLabel Instance called tempLabel before this, I had it as a property
Mi objetivo era generar etiquetas de texto muy rápido (Vistas de tabla) al mismo tiempo que admitía emoticones personalizados. DTAttributedLabels es rápido (mucho más rápido que un UIWebView) NOTA: También hice una fuente personalizada donde había asignado los valores Unicode para los emojis a un glifo personalizado. Para mi sorpresa, aún se muestran los emojis predeterminados. Me gustaría afirmar aquí que cada vez que iOS (CoreText) se encuentra con un personaje cuyo valor se encuentra en la sección Emoji, lo dibuja usando la fuente AppleColorEmoji de forma predeterminada.La falta de documentación sobre cómo la fuente Apple Color Emoji se dibuja realmente en iOS realmente me dificulta probar esto, pero esta parece ser una explicación plausible. Si coloca un emoji de la aplicación de la paleta de caracteres en un archivo en textEdit, selecciónelo e intente cambiar la fuente; verá que no sucede. Del mismo modo, si escribe texto, selecciónelo e intente cambiar su fuente a Apple Color Emoji, verá que no sucede. Cuando descompuse la fuente Apple Color Emoji, no encontré mapeos de caracteres ni glifos para caracteres textuales (excepto 0-9). De alguna manera, incluso si configura la fuente de una etiqueta como Apple Color Emoji, la fuente para la parte textual (no emoji) del texto de su etiqueta se establece en otra cosa.
Siéntase libre de comentar y compartir sus conocimientos, ya que esta región en torno a la fuente Apple Color Emoji aún no está muy clara.
Puede ser que esto ayudaría a que - http://stackoverflow.com/questions/1225514/making-an-emoji-enabeling-app – Sagar