¿Puedo incrustar una fuente personalizada en una aplicación de iPhone?

Resuelto Airsource Ltd asked hace 54 años • 32 respuestas

Me gustaría que una aplicación incluya una fuente personalizada para representar texto, cargarla y luego usarla con UIKitelementos estándar como UILabel. es posible?

Airsource Ltd avatar Jan 01 '70 08:01 Airsource Ltd
Aceptado

iOS 3.2 y posteriores lo admiten. Directamente del documento Novedades del iPhone OS 3.2 :

Compatibilidad con fuentes personalizadas
Las aplicaciones que quieran utilizar fuentes personalizadas ahora pueden incluir esas fuentes en su paquete de aplicaciones y registrarlas en el sistema incluyendo la clave UIAppFonts en su archivo Info.plist. El valor de esta clave es una serie de cadenas que identifican los archivos de fuentes en el paquete de la aplicación. Cuando el sistema ve la clave, carga las fuentes especificadas y las pone a disposición de la aplicación.

Una vez que se hayan configurado las fuentes en Info.plist, puede usar sus fuentes personalizadas como cualquier otra fuente en IB o mediante programación.

Hay un hilo en curso en los foros de desarrolladores de Apple:
https://devforums.apple.com/thread/37824 (es necesario iniciar sesión)

Y aquí hay un excelente y simple tutorial de 3 pasos sobre cómo lograr esto (se eliminó el enlace roto)

  1. Agregue sus archivos de fuentes personalizados a su proyecto usando Xcode como recurso
  2. Agregue una clave a su Info.plistarchivo llamada UIAppFonts.
  3. Haga de esta clave una matriz
  4. Para cada fuente que tenga, ingrese el nombre completo de su archivo de fuente (incluida la extensión) como elementos de la UIAppFontsmatriz
  5. AhorrarInfo.plist
  6. Ahora en su aplicación puede simplemente llamar [UIFont fontWithName:@"CustomFontName" size:12]para obtener la fuente personalizada para usar con sus UILabels y UITextViews , etc.

Además: asegúrese de que las fuentes estén en sus recursos del paquete de copia.

samvermette avatar Apr 11 '2010 05:04 samvermette

Editar: a partir de iOS 3.2, esta funcionalidad está integrada. Si necesita compatibilidad con versiones anteriores a 3.2, aún puede usar esta solución.

Creé un módulo simple que extiende UILabely maneja la carga de archivos .ttf. Lo lancé de código abierto bajo la licencia Apache y lo puse en github aquí.

Los archivos importantes son FontLabel.hy FontLabel.m.

Utiliza parte del código de la respuesta de Genericrich .

Explore la fuente aquí.

O

  • Copie su archivo de fuente en recursos

  • Agregue una clave a su Info.plistarchivo llamada UIAppFonts. ("Fuentes proporcionadas por la aplicación)

  • Haga de esta clave una matriz

  • Para cada fuente que tenga, ingrese el nombre completo de su archivo de fuente (incluida la extensión) como elementos de la matriz UIAppFonts

  • AhorrarInfo.plist

  • Ahora en su aplicación puede simplemente llamar [UIFont fontWithName:@"CustomFontName" size:15]para obtener la fuente personalizada para usar con su UILabelsy UITextViews, etc.

Para más información

commanda avatar Apr 30 '2009 21:04 commanda

Existe una forma sencilla de utilizar fuentes personalizadas en iOS 4 .

  1. Agregue su archivo de fuente (por ejemplo, Chalkduster.ttf) a la carpeta Recursos del proyecto en XCode.
  2. Abra info.plisty agregue una nueva clave llamada UIAppFonts. El tipo de esta clave debe ser matriz.
  3. Agregue su nombre de fuente personalizado a esta matriz, incluida la extensión ( Chalkduster.ttf).
  4. Ahora puedes usarlo [UIFont fontWithName:@"Chalkduster" size:16]en tu aplicación.

Desafortunadamente, IB no permite inicializar etiquetas con fuentes personalizadas. Vea esta pregunta para resolver este problema. Mi solución favorita es utilizar UILabeluna subclase personalizada:

@implementation CustomFontLabel

- (id)initWithCoder:(NSCoder *)decoder
{
    if (self = [super initWithCoder: decoder])
    {
        [self setFont: [UIFont fontWithName: @"Chalkduster" size: self.font.pointSize]];
    }
    return self;
}

@end
alexey avatar Jul 07 '2010 21:07 alexey