Font sur mesure dans ios ne fonctionne pas
je veux utiliser HelveticaNeue-UltraLight dans mon application ios. J'ajoute le fichier de polices comme ressource à mon projet et j'ajoute la touche" polices fournies par application " dans le fichier plist. Le nom du fichier est HelveticaNeue.dfont et moi l'avons ajouté au tableau de clés.
quand je vérifie les polices disponibles, je peux le voir maintenant...
NSArray *fonts = [UIFont fontNamesForFamilyName:@"Helvetica Neue"];
for(NSString *string in fonts){
NSLog(@"%@", string);
}
1-07-08 17:32:57.866 myApp[5159:207] HelveticaNeue-Bold
2011-07-08 17:32:57.866 myApp[5159:207] HelveticaNeue-CondensedBlack
2011-07-08 17:32:57.867 myApp[5159:207] HelveticaNeue-Medium
2011-07-08 17:32:57.867 myApp[5159:207] HelveticaNeue
2011-07-08 17:32:57.868 myApp[5159:207] HelveticaNeue-Light
2011-07-08 17:32:57.868 myApp[5159:207] HelveticaNeue-CondensedBold
2011-07-08 17:32:57.868 myApp[5159:207] HelveticaNeue-LightItalic
2011-07-08 17:32:57.869 myApp[5159:207] HelveticaNeue-UltraLightItalic
2011-07-08 17:32:57.869 myApp[5159:207] HelveticaNeue-UltraLight // HERE IT IS!
2011-07-08 17:32:57.869 myApp[5159:207] HelveticaNeue-BoldItalic
2011-07-08 17:32:57.870 myApp[5159:207] HelveticaNeue-Italic
mais quand j'essaie de l'obtenir avec [UIFont fontWithName:@"HelveticaNeue-UltraLight" size: 12] je viens d'obtenir HelveticaNeue-Light..
Je ne reçois aucune erreur ou avertissement. De l'aide s'il vous plaît!
11 réponses
Non seulement le fichier doit être ajouté au projet, mais il doit être ajouté à la cible.
Parfois (comme dans mon cas), lors de glisser-déposer ".ttf" fichier dans Xcode, le "ajouter à la cible" n'est pas cochée. Cela signifie que le fichier est en fait visible dans votre projet, mais il n'est pas intégré dans l'application.
pour être sûr que c'est:
- cliquez sur le nom du projet (volet de gauche)
- , Puis sur la cible (panneau du milieu)
- puis "Build Phases" (troisième onglet sur le volet de droite)
- Puis "Copy Bundle Resources "
vous devriez voir le fichier de police dans cette liste.
je pense que vous avez le même problème que moi : il y a un bug dans iOS où il n'est pas possible d'utiliser plus de 2 polices de la même famille.
Voir le blog ici pour les détails et la solution : http://www.pixeldock.com/blog/uifont-problem-when-using-more-than-2-custom-fonts-of-the-same-font-family/
après avoir ajouté un fichier de police dans le paquet "Police Fournis par l'Application" de la propriété, cliquez sur la flèche déroulante et entrez votre nom de police avec l'extension
Ouvrir l'application Livre des Polices. Si vous avez installé les polices vous-même, allez à user, recherchez les polices que vous voulez et utilisez le nom PostScript de la police dans votre projet xcode.
il devrait fonctionner même pour des variations de police différentes de la même famille.
il fonctionne avec différentes variantes de la même police(même dans IOS 8). Je posterai mon erreur au cas où quelqu'un aurait le même problème... J'utilisais le nom de fichier de font à la place du nom de la police. Une solution utile consiste à imprimer toutes les polices disponibles et à chercher celle que j'utilisais. Dans Swift serait:
for fontFamilyNames in UIFont.familyNames {
for fontName in UIFont.fontNames(forFamilyName: fontFamilyNames) {
print("FONTNAME:\(fontName)")
}
}
j'ai trouvé ce tutoriel utile dans: Code avec Chris
bien que cela n'aidera probablement pas L'OP, cela pourrait être utile à d'autres.
avec iOS 5, Helvetica Neue
est automatiquement inclus; vous n'avez pas à ajouter cette police personnalisée au pack. Il est même possible d'utiliser cette famille de polices directement depuis Interface Builder, ce qui est extrêmement pratique.
essayez ceci, ce sera aussi une bénédiction pour vous.
[compete_Label setFont:[UIFont fontWithName:@"Helvetica-Bold" size:12]];
Essayez avec des espaces:
[UIFont fontWithName:@"Helvetica Neue UltraLight" size:12];
j'ai fini par acheter la police Helvetica Neue UltraLight d'un tiers, Je l'ai ajouté sans problème.
après avoir passé des heures, j'ai appris que le nom de la police que nous devons ajouter n'est pas le nom du fichier de la police mais le nom réel de la police. J'essayais d'inclure le fichier de police bonveno.ttf . J'ai inclus le nom de fichier avec l'extension en info.plist et a été en mesure de voir la police dans la Copie Bundle de Ressources liste. Mon code était comme
self.label.font = [UIFont fontWithName:@"bonveno" size:30];
qui causait le problème. Ensuite, j'ai double-cliqué sur la police fichier de Finder pour voir la prévisualisation de la police. Cette fois j'ai remarqué le nom de la police dans la fenêtre de prévisualisation comme BonvenoCF . Donc j'ai ajouté ce nom dans le code comme
self.label.font = [UIFont fontWithName:@"BonvenoCF" size:30];
a fonctionné comme un charme!! Je ne peux pas vivre sans cette police mignonne dans mes applications.
afin d'utiliser des polices personnalisées dans iOS, il suffit d'ajouter vos polices par drag & drop à votre projet. Mentionnez le tableau des noms de police avec extension dans Info.plist avec la touche "Polices fournies par application". Ensuite, Imprimez tous les noms de famille de police en utilisant le code ci-dessous:
for (NSString* family in [UIFont familyNames])
{
DebugLog(@"FONT FAMILY: %@", family);
for (NSString *name in [UIFont fontNamesForFamilyName: family])
{
DebugLog(@" %@", name);
}
}
de la Console d'impression :
Arial Hébreu ArialHebrew-Bold ArialHebrew-Light ArialHebrew
Calibri Calibri-Bold Calibri
Géorgie Géorgie-Italic Géorgie-Gras Géorgie-Italique Géorgie
puis à partir de la console, vous obtiendrez les noms de police actuels (comme ci-dessus). Utilisez le code ci-dessous pour créer la police -
dans le texte de base:
CTFontRef fontRef = CTFontCreateWithName((CFStringRef)fontName, fontSize, NULL);
In UIKit:
UIFont *font = [UIFont fontWithName:fontName size:10];
Note: ici fontName = @ "Calibri-Bold" est sans extension.