31 votes

Utilisation de polices personnalisées dans le générateur d'interface

J'ai cherché sur ce site mais je viens de trouver des questions sans réponse.

J'ai chargé une police personnalisée dans mon projet xcode. Un [UIFont fontWithName:@"Laconic-Light" size:19] fonctionne. Mais le constructeur d'interface n'aime pas la police. Je ne peux pas l'utiliser avec IB, il affiche toujours la police par défaut. Existe-t-il un moyen de dire à IB qu'il est acceptable d'utiliser la police?

63voto

Atif Points 1022

J'ai aussi ce problème dans Xcode 4. Dans mon programme, il y a beaucoup de UILabel qui n'ont pas de IBOutlets donc je le fais de cette façon;

Tout d'abord, sous-classe le UILabel à CustomFontLabel

Ensuite, remplacez la méthode " awakeFromNib "

 @implementation CustomFontLabel

- (void)awakeFromNib {
    [super awakeFromNib];
    self.font = [UIFont fontWithName:@"CustomFontName" size:self.font.pointSize];
}

@end
 

Enfin, dans Interface Builder> Identity Inspector, changez la classe en CustomFontLabel .

5voto

James Hall Points 1502

Une autre solution serait de sous-classer UILabel à charger dans votre police personnalisée. Vous pouvez ensuite le référencer dans IB, bien que vous ne puissiez toujours pas voir la police appropriée.

3voto

petehare Points 167

Je préfère le faire d'une manière légèrement plus générique, ce qui vous permet de dimensionner votre texte dans Interface Builder et de simplement remplacer les polices au moment de l'exécution.

Je crée une propriété IBCollection pour tous les éléments UIKit auxquels définir une police, puis je connecte les éléments appropriés à partir d'IB.

 @property (strong, nonatomic) IBOutletCollection(id) NSArray *lightFontItems;
@property (strong, nonatomic) IBOutletCollection(id) NSArray *regularFontItems;
 

Ensuite, à mon avis, j'ai chargé j'utilise une méthode comme celle-ci:

 [self setFontName:@"Roboto-Light" onItemsInArray:[self lightFontItems]];
[self setFontName:@"Roboto-Regular" onItemsInArray:[self regularFontItems]];
 

Et la méthode setLightFontOnItemsInArray: ressemble à ceci:

 + (void)setFontName:(NSString *)fontName onItemsInArray:(NSArray *)array;
{
  [array each:^(id item) {
    if (![item respondsToSelector:@selector(setFont:)]) return;
    [item performSelector:@selector(setFont:) withObject:[UIFont fontWithName:fontName size:[[item font] pointSize]]];
  }];
}
 

3voto

Adam Bishti Points 47

Vous pouvez installer ce script http://pitaya.ch/moarfonts/ .

Fonctionne très bien pour moi avec xcode 5.1.1.

3voto

Suresh Points 2562

Grâce à apple, dans Xcode 6, nous avons des polices personnalisées disponibles dans le constructeur d'interface lui-même.

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