¿Puedo incrustar una fuente personalizada en una aplicación de iPhone?
Me gustaría que una aplicación incluya una fuente personalizada para representar texto, cargarla y luego usarla con UIKit
elementos estándar como UILabel
. es posible?
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)
- Agregue sus archivos de fuentes personalizados a su proyecto usando Xcode como recurso
- Agregue una clave a su
Info.plist
archivo llamadaUIAppFonts
. - 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
UIAppFonts
matriz - Ahorrar
Info.plist
- 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.
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 UILabel
y 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.h
y 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.plist
archivo 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
Ahorrar
Info.plist
Ahora en su aplicación puede simplemente llamar
[UIFont fontWithName:@"CustomFontName" size:15]
para obtener la fuente personalizada para usar con suUILabels
yUITextViews
, etc.
Para más información
Existe una forma sencilla de utilizar fuentes personalizadas en iOS 4 .
- Agregue su archivo de fuente (por ejemplo,
Chalkduster.ttf
) a la carpeta Recursos del proyecto en XCode. - Abra
info.plist
y agregue una nueva clave llamadaUIAppFonts
. El tipo de esta clave debe ser matriz. - Agregue su nombre de fuente personalizado a esta matriz, incluida la extensión (
Chalkduster.ttf
). - 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 UILabel
una 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