102 votes

Polices personnalisées dans iOS 7

Je développe un jeu et j'aimerais utiliser une police personnalisée dans mon application. J'utilise SpriteKit pour cela, si c'est important. J'ai essayé d'utiliser ceci https://github.com/deni2s/IBCustomFonts mais je n'arrive pas à le faire fonctionner avec cette police. http://www.fontspace.com/freaky-fonts/emulogic

J'ai essayé plusieurs choses, et j'ai enregistré la police dans le fichier info.plist de l'application... Quelqu'un sait-il ce qui se passe ?

279voto

jovanjovanovic Points 1005

Tout d'abord, je suppose que SpriteKit ne fait aucune différence.

  1. Vous devez copier votre police en .otf ou .ttf dans votre projet. Par exemple, dans Fichiers de soutien.
  2. Vous devez modifier .plist fichier. Ajouter "Polices fournies par l'application" dans votre plist et dans Article 0 copiez le nom de fichier exact de la police que vous avez copiée dans vos fichiers de soutien AVEC extension. Par exemple : "JosefinSansStd-Light_0.otf"
  3. Assurez-vous que la police que vous avez importée dans votre application est intégrée à l'application elle-même. Pour ce faire, sélectionnez votre Cible entonces Phases de construction entonces Ressources pour le faisceau de copies . Si votre police n'y figure pas, faites-la glisser à partir de Dossiers justificatifs .

Enfin, vous aimeriez que toutes vos polices soient listées au démarrage de l'application afin de voir le nom utilisable pour votre police. Vous ferez cela avec ce petit morceau de code :

NSArray *fontFamilies = [UIFont familyNames];
for (int i = 0; i < [fontFamilies count]; i++)
{
    NSString *fontFamily = [fontFamilies objectAtIndex:i];
    NSArray *fontNames = [UIFont fontNamesForFamilyName:[fontFamilies objectAtIndex:i]];
    NSLog (@"%@: %@", fontFamily, fontNames);
}

Recherchez votre police dans les résultats imprimés, par exemple, je rechercherais "Josefin" et je verrais que le nom réel de la police est "JosefinSansStd-Light". Après cela, vous n'aurez plus qu'à utiliser cette police par :

UIFont *customFont = [UIFont fontWithName:@"JosefinSansStd-Light" size:20];

Dans iOS8, vous ajoutez vos polices directement au projet et elles sont visibles dans le constructeur d'interface. Modifiez votre code pour en tenir compte, mais définissez par programmation la police pour iOS7 et sélectionnez-la dans le constructeur d'interface xCode6. PS. Le constructeur d'interface dans xCode6 vous donne le nom correct de la police que vous pouvez copier-coller dans le code ci-dessous.

#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)

 if(SYSTEM_VERSION_LESS_THAN(@"8.0"))
    {
        UIFont *customFont = [UIFont fontWithName:@"OpenSans-Light" size:32];
        self.registerLabel.font = customFont;  
    }

J'espère que cela vous aidera, merci.

24voto

zago Points 162

Aucun problème pour utiliser des polices personnalisées, je l'ai fait. Suivez ces étapes :

  1. Enregistrez la police dans votre info.plist en ajoutant l'entrée "Fonts provided by application". Mettez le nom du fichier de la police, pas le nom de la police. Comme font.ttf (je pense que vous l'avez déjà fait)
  2. Allez sur votre projet dans le navigateur de projet, cliquez sur le nom du projet et allez dans "phases de construction" puis regardez dans "Copy Bundle Resources" allez en bas, il y a beaucoup de fichiers et cherchez le signe "+". Une fenêtre popup s'ouvrira avec les fichiers de votre projet. Recherchez votre fichier de police et ajoutez-le au paquet.
  3. Enfin, vérifiez le nom de la police. Lorsque vous l'utilisez dans votre code, vous devez utiliser le nom de la police, et non le nom du fichier. Pour connaître le nom de la police, double-cliquez sur le fichier de la police dans le Finder et une fenêtre s'ouvrira, montrant la police. Vérifiez le titre de cette fenêtre, c'est le nom de la police que vous devez utiliser.

Et conseil, ajoutez ce nom comme macro dans votre fichier ..Prefix.pch. Il sera plus facile de l'utiliser dans votre projet si vous devez utiliser la police plusieurs fois.

Le problème que je pense que vous avez rencontré est que vous avez correctement enregistré la police mais qu'elle n'a pas été copiée dans le paquet d'applications. Ainsi, lorsque l'application s'est exécutée, elle n'a pas pu trouver la police. C'est pourquoi l'étape 2 est importante. J'ai passé beaucoup de temps à essayer de comprendre cela la première fois :)

3voto

Idris Points 729

Si vous êtes dans Xcode 6, c'est aussi simple que cela. Ajoutez simplement un font dans votre projet, ajoutez votre/vos police(s) dans le dossier, et c'est parti.

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X