2015-03-30 10 views
7

Sto provando a utilizzare i caratteri della famiglia Open Sans. Ho aggiunto i caratteri al mio progetto Xcode, ho controllato che fossero aggiunti al pacchetto di risorse della mia applicazione e ho aggiunto i caratteri al mio file Info.plist.Font personalizzati visualizzati in IB ma non sul dispositivo

Quando si modifica un XIB in Interface Builder, è possibile utilizzare il carattere Open Sans su UILabel s selezionando Personalizzato nel menu a discesa dei caratteri. Il font viene correttamente visualizzato nell'anteprima in Interface Builder, ma quando lancio l'applicazione sul dispositivo, il font non viene applicato alle etichette.

Ho provato a impostare il carattere a livello di codice, ma non ha funzionato. E non ricevo alcun avvertimento né errore.

Cosa ho dimenticato di essere in grado di utilizzare un carattere personalizzato?

Il comportamento è stato lo stesso su un iPad Air con iOS7 e un iPhone 6 con iOS8.

+0

Forse questo è il problema di localizzazione? Il tuo font personalizzato supporta tutte le lingue che stai utilizzando? – Azat

+0

@Azat In che modo? Inoltre, francese e inglese per ora. – JBL

+0

Stavo affrontando la stessa situazione quando ho provato a usare un font personalizzato. Era OK in inglese, ma nella mia lingua nativa era come predefinito uno – Azat

risposta

1

Assicurarsi di aver aggiunto i caratteri nel file Info.plist. C'è una voce chiamata "Caratteri forniti dall'applicazione" che deve contenere tutti i file di font che si desidera utilizzare.

+0

Scusa se ho dimenticato di dirlo, ma è stato fatto. Quindi non è quello apparentemente. – JBL

+0

Se i font sono visualizzati in Interface Builder, sono font chiaramente validi. Sei sicuro che il font non venga sovrascritto da qualche parte nel tuo codice a qualcosa che non ti aspetti? Possiamo vedere il codice che stai usando? –

0

Stai aggiungendo il carattere al tuo info.plista esattamente come viene scritto il carattere con l'inclusione della sua estensione? Ad esempio, OpenSans.ttf è diverso da opensans.ttf o semplicemente opensans. Per essere sicuro al 100% del nome del file, fare clic con il pulsante destro del mouse sul file del carattere, fare clic su Ottieni informazioni, quindi controllare la descrizione del nome completo. Per aggiungere il carattere a livello di programmazione lasciare l'estensione del file disattivata. Ad esempio,

myLabel.font = [UIFont fontWithName:@"OpenSans" size:32]; 
+0

Fatto tutto, niente è cambiato. – JBL

+0

Hai provato a eliminare l'applicazione dal tuo dispositivo/simulatore, a pulire il progetto, quindi a reinstallarlo? –

+0

Sì, senza successo ... – JBL

3

Basta fare in modo tutti i font sono realmente disponibili nel bundle, provare a stampare tutti i font e verificare se si utilizza il nome corretto. Si può facilmente farlo con seguente codice nel metodo didFinishLaunchingWithOptions app di delegato:

for (NSString *familyName in [UIFont familyNames]) { 
    NSLog(@"Family Name : %@", familyName); 
    for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) { 
     NSLog(@"\tFont Name : %@", fontName); 
    } 
} 

o in Swift:

if let familyNames = UIFont.familyNames() as? [String] { 
    for familyName in familyNames { 
     println("Family : " + familyName) 
     if let fontNames = UIFont.fontNamesForFamilyName(familyName) as? [String] { 
      for fontName in fontNames { 
       println("\tFont : " + fontName) 
      } 
     } 
    } 
} 

Il codice swift non è il più efficace, ma dovrebbe funzionare per controllare se il i caratteri esistono nel pacchetto.

1

Ciò che ha funzionato per me è stato quando ho aggiunto il carattere per verificare "Aggiungi agli obiettivi" di fronte al nome della mia app.

Vedere immagine esempio qui:

enter image description here

+0

puoi fornire maggiori dettagli? – Sampath

+0

hey, ho modificato la mia risposta, cioè la finestra di dialogo che ti viene richiesta quando aggiungi il carattere alla tua app –

1

Vai a Target -> Crea Fasi -> Copia Bundle risorse, lì si controlla se il file font è lì, se non premere il pulsante più e aggiungere manualmente A volte i file dei font non vengono aggiunti automaticamente alle risorse del bundle.

Spero che questo aiuti.