2010-10-01 15 views
16

Cosa devo fare per ottenere un oggetto UIFont con un carattere personalizzato? Ricordo che c'era anche qualcosa nel file Info.plist.Come aggiungere caratteri personalizzati a un'app per iPhone?

Quali formati di file di carattere sono supportati?

+4

possibile duplicato di [Posso incorporare un carattere personalizzato in un'applicazione iPhone?] (Http://stackoverflow.com/questions/360751/can-i-embed-a-custom-font-in-an-iphone- applicazione) –

+0

Utile tutorial: http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/ – Suragch

risposta

52

Per aggiungere un carattere personalizzato all'applicazione, è possibile aggiungerli al progetto XCode. Quindi modificare il file application-info.plist. Aggiungi la chiave "Caratteri forniti dall'applicazione" a una nuova riga. Aggiungi un elemento per ogni carattere che hai aggiunto.

Supporta entrambi i caratteri TTF e OpenType. Un avvertimento è che carica e analizza tutti i tipi di carattere nell'avvio della tua app, quindi rallenterà il tempo di caricamento iniziale.

Credo che questo sia disponibile solo in iOS 3.2 o successivo.

+1

Che cosa aggiungo a Info.plist? Il nome completo del file o? – esbenr

+0

Sì, il nome file completo. –

+1

yourprojectname-Info.plist è completo nomefile. – ArnoHlaMoe

9

Il collegamento migliore per il principiante
Come aggiungere carattere personalizzato nel progetto Link

2

programmazione modo (veloce)

Aggiungere i font al vostro progetto alla cartella delle risorse
E aggiungere questa funzione:

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 esempio:

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

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

Questo è ottimo, sembra migliorare i tempi di avvio. Grazie! – chrilith

Problemi correlati