Puis-je intégrer une police personnalisée dans une application iPhone?

cette question se rapporte à iOS pre-3.2. À partir de 3.2, cette fonctionnalité est facilement réalisable en utilisant la réponse de samvermette ci-dessous, et j'ai changé la réponse acceptée (de la commande à samvermette) pour refléter ceci. Je ne peux pas donner crédit aux deux réponses (en plus des notes positives) mais elles sont toutes les deux bonnes.

je voudrais qu'une application inclue une police personnalisée pour rendre le texte, le charger, puis l'utiliser avec la norme UIKit éléments comme UILabel . Est-ce possible?

j'ai trouvé les liens ci-dessous:

  • http://discussions.apple.com/thread.jspa?messageID=8304744
  • http://forums.macrumors.com/showthread.php?t=569311

mais celles-ci me demanderaient de rendre chaque glyphe moi-même, ce qui est un peu trop comme le travail dur, en particulier pour le texte multi-ligne.

j'ai aussi trouvé des billets qui disent que ce n'est pas possible, mais sans justification, donc je cherche une réponse définitive.


modifier - échec -[UIFont fontWithName:size:] expérience

J'ai téléchargé Harrowprint.tff (Téléchargé de ici ) et l'a ajouté à mon répertoire de ressources et au projet. J'ai alors essayé ce code:

UIFont* font = [UIFont fontWithName:@"Harrowprint" size:20];

, ce qui a entraîné le lancement d'une exception. L'examen du fichier TTF dans Finder a confirmé que le nom de la police était Harrowprint.


éditer - Il ya eu un certain nombre de réponses à ce jour qui me disent de lire la documentation sur X ou Y. j'ai fait de nombreuses expériences avec tous ces et n'a obtenu nulle part. Dans un cas, X s'est avéré être pertinent seulement sur OS X, pas sur iPhone. Par conséquent, je mets une prime pour cette question, et je vais accorder la prime à la première personne qui fournit une réponse (en utilisant seulement des API documentées) qui répond avec suffisamment d'informations pour obtenir ce travail sur l'appareil. Travailler sur le simulateur serait aussi un bonus.


EDIT -il semble que le bounty auto-awards à la réponse avec le plus grand nombre de voix. Intéressant. Personne n'a réellement fourni de réponse qui a résolu la question comme demandé - la solution qui implique de coder votre propre sous-classe UILabel ne supporte pas le Word-wrap, qui est une caractéristique essentielle pour moi - même-bien que je suppose que je pourrais l'étendre pour le faire.

744
demandé sur Super Developers 2008-12-11 23:21:11

30 réponses

iOS 3.2 et versions ultérieures prennent en charge cette. Directement du Quoi de neuf dans l'iPhone OS 3.2 doc:

Personnalisé De Prise En Charge Des Polices

Les Applications qui veulent utiliser des polices personnalisées peuvent maintenant inclure ces polices dans leur paquet d'applications et enregistrer ces polices avec le système en incluant la touche UIAppFonts dans leurs informations.dossier plist. La valeur de cette clé est un tableau de chaînes identifier les fichiers de police dans le paquet de l'application. Lorsque le système détecte la clé, il charge les polices indiquées et les rend disponibles à la demande.

une fois que les polices ont été définies dans le Info.plist , vous pouvez utiliser vos polices personnalisées comme n'importe quelle autre police en IB ou de manière programmatique.

il y a un fil continu sur les Forums de développeurs Apple:

https://devforums.apple.com/thread/37824 (connexion requise)

et voici un excellent et simple tutoriel en 3 étapes sur la façon d'atteindre ce (lien cassé supprimé)

  1. Ajoutez vos fichiers de police personnalisés dans votre projet en utilisant Xcode comme ressource
  2. ajouter une clé à votre fichier Info.plist appelé UIAppFonts .
  3. Faire de cette clé d'un tableau
  4. Pour chaque police que vous avez, entrez le nom complet de votre fichier de police (y compris l'extension) comme articles du UIAppFonts array
  5. Enregistrer Info.plist
  6. maintenant dans votre application, vous pouvez simplement appeler [UIFont fontWithName:@"CustomFontName" size:12] pour obtenir la police personnalisée à utiliser avec votre UILabels et UITextViews , etc ...

aussi: assurez-vous que les polices sont dans vos ressources de paquet de copie.

626
répondu samvermette 2014-03-15 12:56:46

Edit: à partir de iOS 3.2, cette fonctionnalité est intégrée. Si vous avez besoin de soutien pré-3.2, vous pouvez toujours utiliser cette solution.

j'ai créé un module simple qui étend UILabel et gère le chargement .fichiers ttf. Je l'ai publié opensource sous la licence Apache et je l'ai mis sur github ici.

les fichiers importants sont FontLabel.h et FontLabel.m .

It utilise une partie du code de réponse de Genericrich .

parcourir la source ici.

ou

  • Copiez votre fichier de police dans les ressources

  • ajouter une clé à votre fichier Info.plist appelé UIAppFonts. ("Polices fournies par application)

  • tableau

  • pour chaque police que vous avez, entrez le nom complet de votre fichier de police (y compris l'extension) comme éléments du tableau UIAppFonts

  • Enregistrer Info.plist

  • maintenant dans votre application, vous pouvez simplement appeler [UIFont fontWithName:@"CustomFontName" size:15] pour obtenir la police personnalisée à utiliser avec votre UILabels et UITextViews , etc ...

Pour Plus D'Information

291
répondu commanda 2018-02-22 16:48:09

il y a une façon simple d'utiliser des polices personnalisées dans iOS 4 .

  1. ajoutez votre fichier de police (par exemple, Chalkduster.ttf ) à ressources dossier du projet dans XCode.
  2. Ouvrir info.plist et ajouter une nouvelle clé appelée UIAppFonts . Le type de cette clé doit être array.
  3. ajoutez votre nom de police personnalisé à ce tableau en incluant l'extension ( Chalkduster.ttf ).
  4. Maintenant, vous pouvez utiliser [UIFont fontWithName:@"Chalkduster" size:16] dans votre application.

malheureusement, IB ne permet pas d'initialiser les étiquettes avec des polices personnalisées. Voir cette question pour résoudre ce problème. Ma solution préférée est d'utiliser personnalisé UILabel sous-classe:

@implementation CustomFontLabel

- (id)initWithCoder:(NSCoder *)decoder
{
    if (self = [super initWithCoder: decoder])
    {
        [self setFont: [UIFont fontWithName: @"Chalkduster" size: self.font.pointSize]];
    }
    return self;
}

@end
112
répondu alexey 2017-05-23 12:03:02

Dans L'Info.plist ajouter la rubrique "Fonts provided by application" et inclure les noms de police comme chaînes de caractères:

Fonts provided by application
           Item 0        myfontname.ttf
           Item 1        myfontname-bold.ttf
           ...

vérifiez ensuite que votre police est incluse en exécutant:

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

notez que votre nom de fichier ttf pourrait ne pas être le même que celui que vous utilisez lorsque vous définissez la police de votre étiquette (vous pouvez utiliser le code ci-dessus pour obtenir le paramètre "fontWithName"):

[label setFont:[UIFont fontWithName:@"MyFontName-Regular" size:18]];
50
répondu bdev 2013-01-16 18:21:15

edit: This answer is defunted as of iOS3.2; utiliser UIAppFonts

la seule façon que j'ai pu charger avec succès custom UIFont s est via le cadre GraphicsServices privé.

les éléments suivants chargeront toutes les polices .ttf dans le groupe principal de la demande:

BOOL GSFontAddFromFile(const char * path);
NSUInteger loadFonts()
{
    NSUInteger newFontCount = 0;
    for (NSString *fontFile in [[NSBundle mainBundle] pathsForResourcesOfType:@"ttf" inDirectory:nil])
        newFontCount += GSFontAddFromFile([fontFile UTF8String]);
    return newFontCount;
}

une fois les polices chargées, elles peuvent être utilisées comme les polices fournies par Apple:

NSLog(@"Available Font Families: %@", [UIFont familyNames]);
[label setFont:[UIFont fontWithName:@"Consolas" size:20.0f]];

GraphicsServices peut même être chargé lors de l'exécution dans le cas de l'API disparaît dans l'avenir:

#import <dlfcn.h>
NSUInteger loadFonts()
{
    NSUInteger newFontCount = 0;
    NSBundle *frameworkBundle = [NSBundle bundleWithIdentifier:@"com.apple.GraphicsServices"];
    const char *frameworkPath = [[frameworkBundle executablePath] UTF8String];
    if (frameworkPath) {
        void *graphicsServices = dlopen(frameworkPath, RTLD_NOLOAD | RTLD_LAZY);
        if (graphicsServices) {
            BOOL (*GSFontAddFromFile)(const char *) = dlsym(graphicsServices, "GSFontAddFromFile");
            if (GSFontAddFromFile)
                for (NSString *fontFile in [[NSBundle mainBundle] pathsForResourcesOfType:@"ttf" inDirectory:nil])
                    newFontCount += GSFontAddFromFile([fontFile UTF8String]);
        }
    }
    return newFontCount;
}
35
répondu rpetrich 2011-01-18 00:32:16

avec iOS 8 + et Xcode 6 + vous pouvez le faire facilement. Voici les étapes:

1) Faites glisser et déposez votre police dans le dossier des fichiers de soutien Xcode . N'oubliez pas de marquer votre application à la section Ajouter aux cibles . À partir de ce moment, vous pouvez utiliser cette police dans IB et la choisir dans la palette de police.

enter image description here

2) de mettre cette police à disposition de votre appareil, ouvrez votre clé info.plist et ajoutez Fonts provided by application . Il contiendra la touche Item 0, Vous devez ajouter votre nom de police comme valeur. Le nom de la police peut varier du nom de votre fichier de police. Mais d'abord, essayez d'ajouter votre nom de fichier dans la plupart des cas, ce travail.

enter image description here

Si pas, cet article m'ont toujours aidée.

voici un extrait swift du code de cet article pour vous aider à trouver votre nom de la police.

func allFonts(){

   for family in UIFont.familyNames(){

       println(family)


       for name in UIFont.fontNamesForFamilyName(family.description)
       {
           println("  \(name)")
       }

   }

}

EDIT

je tiens à mentionner, que vous avez besoin d'ajouter des fichiers de police à vos les Phases de construction de la cible , ressources de paquet de copie . Sans elle, vous ne verrez pas votre police sur l'appareil. Et cela pourrait conduire à un comportement inattendu.

par exemple, je rencontre un bug , quand UITextField ont la police personnalisée, mais cette police n'était pas dans le Copie Bundle De Ressources . Et quand je passe au viewcontroller avec ce textfield , il y a un délai d'environ 4 secondes avant que la fonction viewDidLoad ne soit appelée. La résolution des problèmes de police a éliminé ce délai. Je recommande donc de le vérifier deux fois. (rdar://20028250) Btw, Je n'ai pas été capable de reproduire le bug, mais je suis sûr que le problème était avec la police.

31
répondu Dima Deplov 2018-02-23 13:55:58

j'ai fait comme ceci:

Chargement de la police:

- (void)loadFont{
  // Get the path to our custom font and create a data provider.
  NSString *fontPath = [[NSBundle mainBundle] pathForResource:@"mycustomfont" ofType:@"ttf"]; 
  CGDataProviderRef fontDataProvider = CGDataProviderCreateWithFilename([fontPath UTF8String]);

  // Create the font with the data provider, then release the data provider.
  customFont = CGFontCreateWithDataProvider(fontDataProvider);
  CGDataProviderRelease(fontDataProvider); 
}

maintenant , dans votre drawRect: , faites quelque chose comme ceci:

-(void)drawRect:(CGRect)rect{
    [super drawRect:rect];
    // Get the context.
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextClearRect(context, rect);
    // Set the customFont to be the font used to draw.
    CGContextSetFont(context, customFont);

    // Set how the context draws the font, what color, how big.
    CGContextSetTextDrawingMode(context, kCGTextFillStroke);
    CGContextSetFillColorWithColor(context, self.fontColor.CGColor);
    UIColor * strokeColor = [UIColor blackColor];
    CGContextSetStrokeColorWithColor(context, strokeColor.CGColor);
    CGContextSetFontSize(context, 48.0f);

    // Create an array of Glyph's the size of text that will be drawn.
    CGGlyph textToPrint[[self.theText length]];

    // Loop through the entire length of the text.
    for (int i = 0; i < [self.theText length]; ++i) {
        // Store each letter in a Glyph and subtract the MagicNumber to get appropriate value.
        textToPrint[i] = [[self.theText uppercaseString] characterAtIndex:i] + 3 - 32;
    }
    CGAffineTransform textTransform = CGAffineTransformMake(1.0, 0.0, 0.0, -1.0, 0.0, 0.0);
    CGContextSetTextMatrix(context, textTransform);
    CGContextShowGlyphsAtPoint(context, 20, 50, textToPrint, [self.theText length]);
}

fondamentalement, vous devez faire un peu de force brute en boucle à travers le texte et en vous promenant avec le nombre magique pour trouver votre offset (ici, voir moi en utilisant 29) dans la police, mais cela fonctionne.

de plus, vous devez vous assurer que la police est légalement intégrable. La plupart ne sont pas et il y a des avocats qui se spécialisent dans ce genre de chose, alors soyez prévenus.

26
répondu Genericrich 2009-03-07 21:34:27

Si vous utilisez xcode 4.3 , vous devez ajouter le font à la Build Phase sous Copy Bundle Resources , selon https://stackoverflow.com/users/1292829/arne dans le thread Polices Personnalisées Xcode 4.3 . Cela a fonctionné pour moi, voici les étapes que j'ai prises pour que les polices personnalisées fonctionnent dans mon application:

  1. ajoutez la police à votre projet. J'ai traîné et laissé tomber les fichiers OTF (ou TTF ) pour un nouveau groupe que j'ai créé et accepté le choix de xcode de copying the files over to the project folder .
  2. créez le tableau UIAppFonts avec vos polices listées comme éléments dans le tableau. Seulement le names , pas l'extension (par exemple " GothamBold ", " GothamBold-Italic ").
  3. cliquez sur le chemin project name en haut du Project Navigator sur le côté gauche de l'écran.
  4. cliquez sur l'onglet Build Phases qui apparaît dans la zone principale de xcode.
  5. élargissez la section " Copy Bundle Resources " et cliquez sur "+" pour ajouter la police.
  6. sélectionnez le fichier de police du navigateur de fichier qui s'ouvre lorsque vous cliquez sur le "+" .
  7. faites ceci pour chaque police que vous avez à add to the project .
20
répondu SKris 2017-05-23 11:47:18

Oui, vous pouvez inclure des polices personnalisées. Reportez-vous à la documentation sur UIFont, en particulier, la méthode fontWithName:size: .

1) assurez-vous d'inclure la police dans votre dossier de ressources.

2) Le "nom" de la police n'est pas nécessairement le nom de fichier.

3) assurez-vous que vous avez le droit légal d'utiliser cette police. En l'incluant dans votre app, vous êtes également le distribuer, et vous devez avoir le droit de le faire.

19
répondu August 2008-12-12 01:18:13

Voici les instructions étape par étape comment faire. Pas besoin de bibliothèque ou de codage spécial.

http://shang-liang.com/blog/custom-fonts-in-ios4 /

la plupart du temps, le problème est avec la police pas la méthode. La meilleure façon de le faire est d'utiliser une police qui à coup sûr va travailler, comme verdana ou geogia. Ensuite, changez la police de caractères désirée. Si cela ne fonctionne pas, peut-être le nom de la police n'est pas la droite ou la police n'est pas un police bien formatée.

12
répondu 5566 2011-08-19 11:28:38

Il est très facile d'ajouter une nouvelle police sur votre Application iOS.

vous avez juste besoin d'ajouter la police par exemple.ttf dans votre dossier ressource.

ouvrez votre application info.plist . Ajoutez une nouvelle ligne comme "polices fournies par application" et tapez le nom de la police comme police.ttf.

et lors de la définition de la police faire comme setFont:"corresponding Font Name"

vous pouvez vérifier si votre police est ajoutée ou non par NSArray *check = [UIFont familyNames]; .

renvoie toute la police supportée par votre application.

12
répondu Subrat 2013-08-08 13:12:55

je recommande de suivre un de mes tutoriels courts préférés ici: http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app / d'où proviennent ces informations.

Étape 1-Faites glisser votre.ttf ou .otf de Finder dans votre projet

NOTE - assurez-vous de cliquer sur la case "Ajouter aux cibles" sur votre application principale cible

Drag font files into your project and click to add them to your target

si vous avez oublié de cliquer pour l'ajouter à votre cible, puis cliquez sur le fichier de police dans la hiérarchie de votre projet et sur le panneau de droite cliquez sur la cible principale de l'application dans le Target Membership section" 15198090920"

how to add fonts to app target if you forgot

pour s'assurer que vos polices font partie de votre cible d'application, assurez-vous qu'elles apparaissent dans votre Copie Bundle de Ressources dans Phases de construction

how to check resources to see if fonts are part of app target

Étape 2-Ajouter les noms des fichiers de police à votre liste

allez à la Custom iOS Target Properties dans votre Section Info et ajoutez une clé aux éléments de cette section appelée Fonts provided by application (vous devriez le voir comme une option que vous tapez et il définira lui-même comme un tableau. Cliquez sur la petite flèche pour ouvrir le tableau des éléments et tapez les noms de la .ttf ou .fichiers otf que vous avez ajouté pour faire savoir à votre application que ce sont les fichiers de police que vous voulez disponible""

NOTE-Si votre application tombe en panne juste après cette étape, vérifiez votre orthographe sur les éléments que vous ajoutez ici

example plist with custom fonts added

Étape 3 - Trouvez les noms de vos polices afin que vous puissiez les appeler

très souvent, le nom de la police vu par votre application est différent de ce que vous pensez qu'il est basé sur le nom du fichier pour cette police, mettez ceci dans votre code et regardez le journal que votre application fait pour voir quel nom de police appeler dans votre code

Swift

for family: String in UIFont.familyNames(){
  print("\(family)")
  for names: String in UIFont.fontNamesForFamilyName(family){
      print("== \(names)")
  }
}

Objectif C

for (NSString* family in [UIFont familyNames]){
    NSLog(@"%@", family);
    for (NSString* name in [UIFont fontNamesForFamilyName: family]){
        NSLog(@"  %@", name);
    }
}

votre journal doit ressembler à quelque chose comme ceci:

Example of searching log to find font names

Étape 4-Utilisez votre nouvelle police personnalisée en utilisant le nom de L'Étape 3

Swift

 label.font = UIFont(name: "SourceSansPro-Regular", size: 18)

Objectif C

 label.font = [UIFont fontWithName:@"SourceSansPro-Regular" size:18];
10
répondu ColossalChris 2015-09-29 16:53:57

Trouver la TTF dans le finder " et "Obtenir des informations". Sous le titre " Nom Complet: "il m'a donné un nom que j'ai ensuite utilisé avec fontWithName (je viens de copier et collé le nom exact, dans ce cas non '.TTF ' extension était nécessaire).

9
répondu Nano 2010-12-07 01:16:18

un avis important: vous devez utiliser le" nom PostScript " associé à la police, et non son nom complet ou son nom de famille. Ce nom peut souvent être différent du nom normal de la police.

8
répondu user576862 2011-01-15 16:40:06

il n'est pas encore sorti, mais la prochaine version de cocos2d (2D game framework) prendra en charge les polices bitmap à longueur variable comme cartes de caractères.

http://code.google.com/p/cocos2d-iphone/issues/detail?id=317

l'auteur n'a pas de date de sortie précise pour cette version, mais j'ai vu un message qui indiquait que ce serait dans le mois ou les deux prochains.

7
répondu John 2009-04-27 22:56:36

suivre cette étape

1)Copiez votre police dans votre projet

2)Ouvrez votre fichier .plist en mode code source...(Note - Ne pas ouvrir info.plist )

3) avant cela-clic droit sur votre police et l'ouvrir dans fontforge ou éditeur similaire et install il dans votre système ,il devrait être install

4) Tapez ce

 <key>UIAppFonts</key>
<array>
    <string>MyriadPro.otf</string>
</array>

5)tapez ce code dans votre class .m

 [lblPoints setFont:[UIFont fontWithName:@"Myriad Pro" size:15.0]];

ici lbl points seront changées à partir de votre UILabel

fait!! Si votre police fonctionnent pas,vérifiez vos polices compatibilité

6
répondu Kirtikumar A. 2018-02-22 16:28:29

peut-être que l'auteur a oublié de donner à la police un Mac nom de FOND ?

  1. ouvrez la police dans FontForge puis allez à Element>Font Info
  2. il y a une Option" Mac " où vous pouvez définir le nom de FOND.
  3. sous Fichier > Exporter la police vous pouvez créer un nouveau ttf

vous pouvez également donner L'option "Apple" dans le dialogue d'exportation un essai.

clause de non-responsabilité : Je ne suis pas un développeur D'IPhone!

5
répondu ByteNirvana 2009-05-01 01:19:38

j'ai combiné certains des conseils sur cette page en quelque chose qui fonctionne pour moi sur iOS 5.

tout d'Abord, vous devez ajouter de la police personnalisée à votre projet. Ensuite, vous devez suivre les conseils de @iPhoneDev et ajouter la police à vos informations.dossier plist.

après que vous avez fait cela, cela fonctionne:

UIFont *yourCustomFont = [UIFont fontWithName:@"YOUR-CUSTOM-FONT-POSTSCRIPT-NAME" size:14.0];
[yourUILabel setFont:yourCustomFont];

cependant, vous devez connaître le nom Postscript de votre police. Il suffit de suivre les conseils de @Daniel Wood et appuyez sur commande-I tandis que vous êtes dans le livre des polices.

Alors, profitez de votre police personnalisée.

5
répondu AaronBaker 2012-09-03 16:13:27

ajoutez D'abord la police.format odt à vos ressources, dans ce cas, nous utiliserons DINEngschriftStd.otf, puis utiliser ce code pour assigner la police à l'étiquette

[theUILabel setFont:[UIFont fontWithName:@"DINEngschriftStd" size:21]];

pour s'assurer que votre police est chargée sur le projet, il suffit d'appeler

NSLog(@"Available Font Families: %@", [UIFont familyNames]);

sur le .plist vous devez le déclarer à la police. Il suffit d'ajouter un enregistrement 'Fonts provided by application' et d'ajouter une chaîne d'item 0 avec le nom de la police (DINEngschriftStd.otf)

5
répondu Alejandro Luengo 2012-09-26 09:58:53

pour iOS 3.2 et plus: Utiliser les méthodes fournies par plusieurs ci-dessus, qui sont:

  1. ajoutez votre fichier de police (par exemple, Chalkduster.ttf ) vers le dossier Ressources du projet dans XCode.
  2. ouvrir l'info.plist et ajouter une nouvelle clé appelée UIAppFonts. Le type de cette clé doit être array.
  3. ajoutez votre nom de police personnalisé à ce tableau incluant l'extension (" Chalkduster.ttf ").
  4. utilisez [UIFont fontWithName:@"Real Font Name" size:16] dans votre application.

mais Le "vrai nom de police" n'est pas toujours celui que vous voyez dans Fontbook. La meilleure façon est de demander à votre appareil quelles polices il voit et quels sont les noms exacts.

j'utilise le UIFont-nom-grabber affiché à: uifont-nom-grabber

il suffit de déposer les polices que vous voulez dans le projet xcode, ajouter le fichier nom à son plugin, et l'exécuter sur le périphérique pour lequel vous construisez, il vous enverra une liste complète de police en utilisant les noms que UIFont fontWithName: attend.

5
répondu Jarson 2013-06-14 10:45:01

j'ai essayé les diverses suggestions sur cette page sur iOS 3.1.2 et voici mes conclusions:

utiliser simplement [UIFont fontWithName:size:] avec les polices dans le répertoire des ressources ne fonctionnera pas, même si le nom de FOND est défini en utilisant FontForge.

[UIFont fontWithName:size:] fonctionnera si les polices sont chargées en premier en utilisant GSFontAddFromFile. Mais GSFontAddFromFile ne fait pas partie de iOS 3.1.2 donc il doit être chargé dynamiquement comme décrit par @rpetrich.

5
répondu Jacob Wallström 2013-08-08 13:11:11

Meilleure solution est d'ajouter une nouvelle propriété " Fonts provided by application " à votre "151910920 de fichier".

ensuite, vous pouvez utiliser votre police personnalisée comme la normale UIFont .

5
répondu RichX 2013-08-08 13:11:49

Look up ATSApplicationFontsPath

une entrée simple qui vous permet d'inclure le(S) fichier (s) de police dans votre dossier de ressources de l'application et ils" ne font que fonctionner " dans votre application.

4
répondu Matt Sephton 2009-04-09 11:59:46

il y a une nouvelle façon d'utiliser les polices personnalisées, en commençant par iOS 4.1. Il vous permet de charger les polices de manière dynamique, à partir de fichiers inclus avec l'application, les données téléchargées, ou ce que vous avez. Il vous permet également de charger les polices comme vous en avez besoin, alors que l'ancienne méthode les charge toutes au démarrage de l'application, ce qui peut prendre trop de temps si vous avez beaucoup de polices.

La nouvelle méthode est décrite dans le ios-dynamique-font-chargement

vous utilisez le "151910920 fonction", lui donnant un tampon avec vos données de police. Il est alors disponible pour UIFont et des vues web, tout comme avec l'ancienne méthode. Voici le code d'exemple de ce lien:

NSData *inData = /* your font-file data */;
CFErrorRef error;
CGDataProviderRef provider = CGDataProviderCreateWithCFData((CFDataRef)inData);
CGFontRef font = CGFontCreateWithDataProvider(provider);
if (! CTFontManagerRegisterGraphicsFont(font, &error)) {
    CFStringRef errorDescription = CFErrorCopyDescription(error)
    NSLog(@"Failed to load font: %@", errorDescription);
    CFRelease(errorDescription);
}
CFRelease(font);
CFRelease(provider);
3
répondu David M. 2013-06-14 10:58:39

vous pouvez ajouter les fichiers" FONT " nécessaires dans le dossier Ressources. Ensuite, allez au projet Info.plist fichier et utilisez la touche "polices fournies par l'application" et la valeur comme "nom de police".

alors vous pouvez appeler la méthode [UIFont fontwithName:@"FONT NAME" size:12];

2
répondu Nishan29 2013-08-08 13:13:38

Swift, code way: (fonctionne aussi avec swift 2.0)

ajouter les polices nécessaires à votre projet( tout comme ajouter des images, il suffit de faire glisser vers Xcode), assurez-vous qu'ils sont ciblés à votre projet

ajouter cette méthode et charger des polices personnalisées (recommandé dans appDelegate didFinishLaunchingWithOptions )

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, terminator: "")
    }

}

utiliser l'exemple:

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

utilisez la police:

UIFont(name: "My-Font", size: 16.5)
2
répondu Daniel Krom 2015-10-29 10:53:54

j'ai tout fait possible mais les nouvelles polices n'apparaissent pas donc j'ai trouvé la solution:

lorsque vous faites glisser les fichiers fot(otf ou ttf), n'oubliez pas de cocher la case "Ajouter aux cibles".

après avoir fait cela votre police apparaîtra et tout fonctionnera bien.

1
répondu ElizaS 2013-01-28 15:34:35

bien que certaines des réponses ci-dessus soient correctes, j'ai écrit un tutoriel visuel détaillé pour les gens qui ont encore des problèmes avec les polices.

les solutions ci-dessus qui vous disent d'ajouter la police à la liste et utiliser

[self.labelOutlet setFont:[UIFont fontWithName:@"Sathu" size:10]];

sont les corrects. S'il vous plaît, utilisez une autre méthode Macaque. Si vous rencontrez toujours des problèmes pour trouver les noms de police et les ajouter, voici le tutoriel -

à l'Aide de les polices personnalisées dans l'application iOS

1
répondu Bharat Gulati 2013-06-14 10:58:32

oui vous pouvez utiliser une police personnalisée dans votre application

étape par étape après là:

ajouter vos fichiers de police de caractères personnalisés dans votre projet dans les fichiers de soutien

ajouter une clé à vos informations.un fichier appelé UIAppFonts.

Faire de cette clé d'un tableau

pour chaque police que vous avez, entrez le nom complet de votre fichier de police (y compris l'extension) comme éléments du tableau UIAppFonts

Enregistrer Les Informations.plist maintenant dans votre application, vous pouvez simplement appeler [UIFont fontWithName:@ "votre nom de police Personnalisé" Taille: 20] pour obtenir la police personnalisée à utiliser avec vos UILabels après avoir appliqué cela si vous n'obtenez pas la police correcte puis vous double-cliquez sur la police personnalisée , et voir avec soin top side font name comming et copier cette police, coller, ici [UIFont fontWithName:@ "ici après votre nom de police Personnalisé" Taille: 20]

j'espère que vous obtiendrez la bonne réponse

1
répondu Akhil Bhadauria 2014-03-26 07:00:11

oui vous pouvez utiliser une police personnalisée dans votre application

étape par étape après là:

  • ajouter vos fichiers de police personnalisés dans votre projet dans les fichiers de soutien
  • ajouter une clé à votre fichier Info.plist appelé UIAppFonts.
  • Faire de cette clé d'un tableau
  • pour chaque police que vous avez, entrez le nom complet de votre fichier de police (y compris l'extension) comme éléments de la Uiappfonts array
  • Enregistrer Info.plist Maintenant, dans votre application, vous pouvez simplement appeler [UIFont fontWithName:@"your Custom font Name" size:20] pour obtenir la police personnalisée à utiliser avec votre UILabels

après avoir appliqué ceci si votre police n'est pas correcte ensuite, vous double-cliquez sur la police personnalisée , et voir avec soin top side font name comming et copiez cette police, collez, ici [UIFont fontWithName:@" here past your Custom font Name" size:20] j'espère que vous allez me répondre

1
répondu user2691469 2018-02-22 18:15:03