95 votos

¿Qué pasó con "HelveticaNeue-Italic" en iOS 7.0.3

Acaba de actualizar mi iPod touch para iOS 7.0.3 y "HelveticaNeue-Cursiva" parece haber desaparecido. Cuando me consulta en el teléfono con:

[UIFont fontNamesForFamilyName:@"Helvetica Neue"]

Me sale el siguiente fontNames (13):

HelveticaNeue-BoldItalic,
HelveticaNeue-Light,
HelveticaNeue-UltraLightItalic,
HelveticaNeue-CondensedBold,
HelveticaNeue-MediumItalic,
HelveticaNeue-Thin,
HelveticaNeue-Medium,
HelveticaNeue-ThinItalic,
HelveticaNeue-LightItalic,
HelveticaNeue-UltraLight,
HelveticaNeue-Bold,
HelveticaNeue,
HelveticaNeue-CondensedBlack

Cuando hago la misma consulta en el simulador I get (14):

HelveticaNeue-BoldItalic,
HelveticaNeue-Light,
**HelveticaNeue-Italic,**
HelveticaNeue-UltraLightItalic,
HelveticaNeue-CondensedBold,
HelveticaNeue-MediumItalic,
HelveticaNeue-Thin,
HelveticaNeue-Medium,
HelveticaNeue-Thin_Italic,
HelveticaNeue-LightItalic,
HelveticaNeue-UltraLight,
HelveticaNeue-Bold,
HelveticaNeue,
HelveticaNeue-CondensedBlack

Nadie ve esto?

---- Nueva Información ----

Volví a la WWDC 2013 video "Utilizando la Fuente con el Texto Kit" y la parte interesante comienza a las 12:22. El presentador habla de "MetaFonts" en OS X como un ejemplo. Lo que dice es que la fuente en virtud de las llamadas:

+ (NSFont *)messageFontOfSize:(CGFloat)fontSize

no se garantiza la devolución de la misma fuente a través de versiones o incluso de diferentes usos. Su ejemplo fue Lucinda Grande. Él no parece estar diciendo que el uso de "HelveticaNeue-Cursiva" podría desaparecer a partir de la versión a versión.

Así que construí un experimento en iOS 7. He creado mi fuente con el siguiente código:

UIFontDescriptor *fontDescriptor = [UIFontDescriptor fontDescriptorWithName:@"Helvetica Neue" size:16.0];
UIFontDescriptor *symbolicFontDescriptor = [fontDescriptor fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];

UIFont *fontWithDescriptor = [UIFont fontWithDescriptor:symbolicFontDescriptor size:16.0];

Me hizo llegar un válido UIFont de vuelta para fontWithDescriptor y cuando me preguntó por la fuente para el nombre de la tipografía con:

[fontWithDescriptor fontName]

Volví...

HelveticaNeue-Italic

Vaya usted a saber???

Así que una posible respuesta a la 7.0.3 parece ser el código de arriba.

---- Modificar Más ----

Aunque la solución trabajado anteriormente, no creo que sea formalmente correcta. Me he cambiado a la siguiente solución

    UIFontDescriptor *fontDescriptor = [[UIFontDescriptor alloc] init];

    UIFontDescriptor *fontDescriptorForHelveticaNeue = [fontDescriptor fontDescriptorWithFamily:@"Helvetica Neue"];
    UIFontDescriptor *symbolicFontDescriptor = [fontDescriptorForHelveticaNeue fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic];

    textFont = [UIFont fontWithDescriptor:symbolicFontDescriptor size:textFontPointSize];

Esto parece hacer todas las cosas correctas. He probado el enfoque anterior con otra familia de fuentes y parecía confundirse con el nombre de la tipografía y el fontFamily. Espero que esto ayude!

29voto

Mike Vosseller Puntos 1095

Esta es una Manzana error. Fue introducido en iOS 7.0.3 y aún no ha sido fijada como de iOS 7.0.4. Parece ser corregido en la versión previa para desarrolladores de iOS 7.1. Aquí está el código (proporcionado por Apple en el dev foros) para solucionar el problema:

#import <CoreText/CoreText.h>

CGFloat size = 14;
UIFont *font = [UIFont fontWithName:@"HelveticaNeue-Italic" size:size];
if (font == nil && ([UIFontDescriptor class] != nil)) {
    font = (__bridge_transfer UIFont*)CTFontCreateWithName(CFSTR("HelveticaNeue-Italic"), size, NULL);
}

También vale la pena señalar que en la actual versión de Xcode (5.0.1 (5A2053)) esta fuente no aparece como una opción en la Fuente de la lista desplegable en el Interface Builder. Así que si usted ha configurado previamente una etiqueta con esta fuente, usted notará que la interfaz de usuario es confusa y la etiqueta termina siendo asignado algún otro tipo de letra y tamaño en tiempo de ejecución (véase la interfaz de usuario de la captura de pantalla a continuación). Para las etiquetas de los configurados en los storyboards/xibs usted tendrá que restablecer la fuente en código.

Para la referencia aquí es el debate de la cuestión en el dev foros: https://devforums.apple.com/message/910758

enter image description here

7voto

Dave DeLong Puntos 156978

Este es un bug en iOS 7.0.3.

Si está utilizando explícitamente HelveticaNeue-Italic, se puede crear utilizando esta solución:

UIFont* font = (__bridge_transfer UIFont*)CTFontCreateWithName(CFSTR("HelveticaNeue-Italic"), fontSize, NULL);

Sin embargo, que esta solución funcionará sólo en iOS 7; No es utilizable para iOS 6 (porque CTFontRef y UIFont no fueron puente gratis en iOS 6). Sin embargo, en iOS 6 puede simplemente utilizar su código de búsqueda regular fuente.

4voto

David Lari Puntos 120

Es mi creencia que es un error. Lo he presentado como tal con Apple. Lamentablemente para mí, mi aplicación ahora está colapsando. La fuente se utiliza en una biblioteca de partido 3 º estoy usando. Mucha gente en Twitter está reportando problemas.

3voto

Kapil Chandel Puntos 101

Si tiene acceso dinámicamente la fuente cursiva entonces en lugar de acceder a la fuente por nombre [UIFont fontWithName:@"HelveticaNeue-Italic" size:15.0f] uso [UIFont italicSystemFontOfSize:15.0f] esto funciona bien para mí.

2voto

madboy Puntos 948

Actualmente no encuentro la sesión pero dijeron algo que no puede confiar en las fuentes están disponibles ya en iOS7. Incluso pueden cambiar durante la vida útil de su aplicación. Lo que básicamente significa: Cuando especifica las fuentes en su aplicación, se atornillan, utilizar descriptores font o prefirió en cambio fuentes!

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X