Fuente personalizada en ios que no funciona

Quiero usar HelveticaNeue-UltraLight en mi aplicación ios. Agrego el file de fuente como recurso a mi proyecto y agrego la key "Fonts provided by application" en el file plist. El nombre del file es HelveticaNeue.dfont y lo he agregado a la matriz de keys.

Cuando reviso las fonts disponibles, puedo verlo ahora …

NSArray *fonts = [UIFont fontNamesForFamilyName:@"Helvetica Neue"]; for(NSString *string in fonts){ NSLog(@"%@", string); } 1-07-08 17:32:57.866 myApp[5159:207] HelveticaNeue-Bold 2011-07-08 17:32:57.866 myApp[5159:207] HelveticaNeue-CondensedBlack 2011-07-08 17:32:57.867 myApp[5159:207] HelveticaNeue-Medium 2011-07-08 17:32:57.867 myApp[5159:207] HelveticaNeue 2011-07-08 17:32:57.868 myApp[5159:207] HelveticaNeue-Light 2011-07-08 17:32:57.868 myApp[5159:207] HelveticaNeue-CondensedBold 2011-07-08 17:32:57.868 myApp[5159:207] HelveticaNeue-LightItalic 2011-07-08 17:32:57.869 myApp[5159:207] HelveticaNeue-UltraLightItalic 2011-07-08 17:32:57.869 myApp[5159:207] HelveticaNeue-UltraLight // HERE IT IS! 2011-07-08 17:32:57.869 myApp[5159:207] HelveticaNeue-BoldItalic 2011-07-08 17:32:57.870 myApp[5159:207] HelveticaNeue-Italic 

Pero cuando bash conseguirlo con [UIFont fontWithName: @ "HelveticaNeue-UltraLight" size: 12] Acabo de recibir HelveticaNeue-Light …

No recibo errores ni advertencias. ¡Ayuda por favor!

El file no solo debe agregarse al proyecto, sino que también debe agregarse al destino.

A veces (como en mi caso), al drag and drop el file ".ttf" en Xcode, el "agregar al destino" no está marcado. Esto significa que el file es realmente visible en su proyecto, pero no está embedded en la aplicación.

Para asegurarte de que sea:

  • Haga clic en el nombre del proyecto (panel izquierdo)
  • Luego en el objective (panel central)
  • Luego "Construir fases" (tercera pestaña en el panel derecho)
  • Luego "Copy Bundle Resources"

Debería ver el file de fuente en esa list.

Creo que tienes el mismo problema que tuve: hay un error en iOS donde no puede usar más de 2 fonts de la misma familia.

Vea la publicación del blog aquí para get más información y la solución: http://www.pixeldock.com/blog/uifont-problem-when-using-more-than-2-custom-fonts-of-the-same-font-family/

Abra la aplicación Libro de fonts. Si instaló las fonts usted mismo, vaya al usuario, busque las fonts que desee y use el nombre PostScript de la fuente en su proyecto xcode.

Debería funcionar incluso para diferentes variaciones de fuente de la misma familia.

después de agregar el file Font en la propiedad Bundle "Font Provided by Application" , click la flecha desplegable e ingrese su nombre de fuente con la extensión

Está funcionando con diferentes variaciones de la misma fuente (incluso en IOS 8). Publicaré mi error por si alguien tiene el mismo problema … Estaba usando el nombre de file de la fuente en lugar del nombre de la fuente. Una solución útil es imprimir todas las fonts disponibles y search la que estaba usando. En Swift sería:

 for fontFamilyNames in UIFont.familyNames() { for fontName in UIFont.fontNamesForFamilyName(fontFamilyNames) { print("FONTNAME:\(fontName)") } } 

Encontré este práctico tutorial en: Code with Chris

Si bien esto probablemente no ayude al OP, podría ser útil para otros.

Con iOS 5, Helvetica Neue se incluye automáticamente; no tiene que agregar esta fuente personalizada al package. Incluso es posible usar esa familia de fonts directamente desde Interface Builder, que es extremadamente útil.

Prueba esto, esto también será muy divertido para ti.

  [compete_Label setFont:[UIFont fontWithName:@"Helvetica-Bold" size:12]]; 

Intente con espacios:

 [UIFont fontWithName:@"Helvetica Neue UltraLight" size:12]; 

¿ Ciertas fonts no aparecen?

Terminé comprando la fuente Helvetica Neue UltraLight de un tercero, lo agregué sin problemas.

Para usar fonts personalizadas en iOS, simplemente agregue sus fonts arrastrando y soltando a su proyecto. Mencione la matriz de nombres de fonts con extensión en Info.plist con la tecla "Fuentes proporcionadas por la aplicación". Luego imprima todos los nombres de las familias de fonts usando el siguiente código:

 for (NSString* family in [UIFont familyNames]) { DebugLog(@"FONT FAMILY: %@", family); for (NSString *name in [UIFont fontNamesForFamilyName: family]) { DebugLog(@" %@", name); } } 

Impresión de la console:

Arial Hebreo ArialHebrew-Bold ArialHebrew-Light ArialHebrew

Calibri Calibri-Bold Calibri

Georgia Georgia-BoldItalic Georgia-Bold Georgia-Italic Georgia

Luego, desde la console, obtendrás los nombres de fuente reales (como arriba). Usa el siguiente código para crear una fuente:

En el text principal:

 CTFontRef fontRef = CTFontCreateWithName((CFStringRef)fontName, fontSize, NULL); 

En UIKit:

 UIFont *font = [UIFont fontWithName:fontName size:10]; 

Nota: aquí fontName = @ "Calibri-Bold" no tiene extensión.

Después de pasar horas, descubrí que el nombre de la fuente que necesitamos agregar no es el nombre del file de la fuente sino el nombre real de la fuente. Intentaba include el file de fuente bonveno.ttf . He incluido el nombre del file junto con la extensión en info.plist y pude ver la fuente en la list Copiar resources del package . Mi codigo era como

 self.label.font = [UIFont fontWithName:@"bonveno" size:30]; 

eso estaba causando el problema Luego hice doble clic en el file de fuente del Finder para ver la vista previa de la fuente. Esa vez noté el nombre de la fuente en la window de vista previa como BonvenoCF . Entonces agregué ese nombre en el código como

 self.label.font = [UIFont fontWithName:@"BonvenoCF" size:30]; 

Funcionó como encanto! No puedo vivir sin esta bonita fuente en mis aplicaciones.