Iconos elegantes de iOS5 (¿emoji?) para caracteres Unicode especiales, no es lo que quiero

I've always thought it was great that I could use simple iconic unicode characters in a string when I needed an arrow or a bullet or whatever. The glyphs would render in the same color as the rest of the string with a nice simple and clean icons. I could preview how they'd look by using the Mac's "Special Characters" dialog on the Edit menu in XCode.

In iOS5, these glyphs render in full color and aren't simple and clean. I believe these are Emoji icons?

I'm looking for an explanation of this change, and ideally how to force iOS5 to revert to the iOS2 - iOS4 behavior.

He aquí un ejemplo: @"← left arrow, right arrow → airplane ✈";


Apparently the NSString UIKit extensions for rendering text (drawAtPoint: / drawInRect:) don't exhibit this behavior. So perhaps it is a UILabel thing? Specifically I've noticed it inside a UISegmentControl segment button, and in a UILabel.

preguntado el 08 de noviembre de 11 a las 16:11

I recommend filing a bug. There are plenty of times you want the Unicode character, and this should be under app control. -

1 Respuestas

This isn't a bug, it's down to the font used. When you use a character in a string that isn't available in the chosen font, iOS automatically substitutes a glyph from another font.

The system font (Helvetica) doesn't have those characters in it, so I'm guessing that Apple have have changed the list of fallback fonts so that Emoji ranks above whatever it was using previously for the fallback for those characters.

To fix it, find a font that a) has the version of the characters you want in it, and b) is available on iPhone, and set your label to use that instead of the default system font.

Alternatively, you could just make a UILabel subclass and override the drawRect method so it uses the drawAtPoint/drawInRect methods to draw the string.

respondido 20 mar '12, 22:03

I didn't figure it to be a bug, per se. It's definitely a behavior change to use a different "fallback" font. I've been using Hiragino Kaku Gothic ProN W6 15.0 as it seems to have all of the "old" symbols. But this is really only acceptable when I dont need to intermix text and symbols. - TomSwift

The custom UILabel seems like the easiest option. If you don't feel like rolling your own, you could try my FXLabel (github.com/nicklockwood/FXLabel) which uses the core graphics string drawing methods, so presumably won't have this problem. - Nick Lockwood

That looks nice, thanks. It doesn't help for buttons or other controls though :( - TomSwift

It's relatively easy to inject a custom label as a subview to a UIButton and then wrap it all up in a reusable subclass. - Nick Lockwood

For that you can use [[UIBarItem alloc] initWithCustomView:....]. If you want it to look like a regular UIBarButtonItem, a neat trick is to use a UISegmentedControl as your custom view with numberOfSegments set to 1 and control style of UISegmentedControlStyleBar. That looks identical to a regular UIBarButtonItem, but because it's a view, you can add subviews (such as FXLabel). - Nick Lockwood

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.