2010-10-01 28 views
16

¿Qué debo hacer para obtener un objeto UIFont con una fuente personalizada? Recuerdo que también estaba sucediendo algo en el archivo Info.plist.¿Cómo agregar fuentes personalizadas a una aplicación de iPhone?

¿Qué formatos de archivos de fuentes son compatibles?

+4

posible duplicado de [¿Puedo incrustar una fuente personalizada en una aplicación de iPhone?] (Http://stackoverflow.com/questions/360751/can-i-embed-a-custom-font-in-an-iphone- aplicación) –

+0

Tutorial útil: http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/ – Suragch

Respuesta

52

Para agregar una fuente personalizada a su aplicación, puede agregarla al proyecto XCode. Luego, modifique el archivo application-info.plist. Agregue la clave "Fuentes proporcionadas por la aplicación" a una nueva fila. Agregue un artículo por cada fuente que haya agregado.

Admite fuentes TTF y OpenType ambas. Una advertencia es que carga y analiza todas las fuentes en el inicio de su aplicación, por lo que ralentizará el tiempo de carga inicial.

Creo que esto solo está disponible en iOS 3.2 o posterior.

+1

¿Qué puedo agregar al Info.plist? El nombre de archivo completo o? – esbenr

+0

Sí, el nombre completo del archivo. –

+1

yourprojectname-Info.plist es el nombre completo del archivo. – ArnoHlaMoe

9

El mejor enlace para principiantes
Cómo agregar fuente personalizada en su proyecto Link

2

Programación manera (rápida)

Añadir las fuentes para su proyecto en la carpeta de recursos
y añadir esta función:

func loadFont(filePath: String) { 

    let fontData = NSData(contentsOfFile: filePath)! 

    let dataProvider = CGDataProviderCreateWithCFData(fontData) 
    let cgFont = CGFontCreateWithDataProvider(dataProvider)! 

    var error: Unmanaged<CFError>? 
    if !CTFontManagerRegisterGraphicsFont(cgFont, &error) { 
     let errorDescription: CFStringRef = CFErrorCopyDescription(error!.takeUnretainedValue()) 
     print("Unable to load font: %@", errorDescription) 
    } 

} 

uso ejemplo:

if let fontPath = NSBundle.mainBundle().pathForResource("MyCustomFont", ofType:"ttf"){ 
    loadFont(fontPath) 
} 

... 
... 
let myFont = UIFont(name: "MyCustomFont",size: CGFloat(18)) 
+0

Esto es genial, parece mejorar el tiempo de inicio. ¡Gracias! – chrilith

Cuestiones relacionadas