web-dev-qa-db-fra.com

UILabel - Définition de la police - Police de caractères par programme pour iPhone

J'ai le code suivant dans mon application.

tmp=[[UILabel alloc] initWithFrame:label1Frame];
tmp.tag=1;
tmp.textColor=[UIColor blackColor];
[tmp setFont:[UIFont fontWithName:@"American Typewriter" size:18]];
tmp.backgroundColor=[UIColor clearColor];
[cell.contentView addSubview:tmp];
[tmp release];

Maintenant, j'ai besoin de savoir,

======> comment définir "Caractère = gras" dans le code?

28
Sagar R. Kothari

Vous devrez utiliser le nom de la police bold dans la famille. Pour savoir s’il existe une version bold de American Typewriter, essayez d’afficher 

[UIFont fontNamesForFamilyName:@"AmericanTypewriter"] 

à la console.

Dans ce cas, vous devriez utiliser "AmericanTypewriter-Bold".

[UIFont fontNamesForFamilyName:@"AmericanTypewriter-Bold"] 
36
devinfoley

Qu'en est-il de l'utilisation de la propriété setter: 

// Create a string  
NSString *text = @"You are getting sleepy.";

// Get a font to draw it in  
UIFont *font = [UIFont boldSystemFontOfSize:28];

// Draw the string  
[text drawInRect:(CGRect)
withFont:font];
20
dcrawkstar

Just NSLog La police que vous voulez obtenir:

NSLog(@" %@", [UIFont fontNamesForFamilyName:@"American Typewriter"]);

Et vous obtenez le tableau:

(
    "AmericanTypewriter-CondensedLight",
    "AmericanTypewriter-Light",
    "AmericanTypewriter-Bold",
    AmericanTypewriter,
    "AmericanTypewriter-CondensedBold",
    "AmericanTypewriter-Condensed"
)

Utilisez tout ce dont vous avez besoin dans le code:

UILabel * loading = [[UILabel alloc] initWithFrame:CGRectMake(350, 402, 150, 25)];
    [loading setFont:[UIFont fontWithName:@"AmericanTypewriter-Bold" size:12.0]];
    [loading setTextColor:[UIColor whiteColor]];
    [loading setBackgroundColor:[UIColor clearColor]];
    [loading setText:@"Loading ..."];
    [self.view addSubview:loading];
17
Nazir

Vous pouvez obtenir tous les noms de police pris en charge par iOS sur ce site iOSfonts . Prenez un aperçu de votre chaîne exacte pour trouver la meilleure police et utilisez-la comme indiqué dans les réponses ci-dessus

UILabel * myLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 400, 150, 50)];
    [loading setFont:[UIFont fontWithName:@"Avenir-Black" size:12.0]];
    [loading setTextColor:[UIColor redColor]];
    [loading setBackgroundColor:[UIColor clearColor]];
    [loading setText:@"My Label Title"];
    [self.view myLabel];
2
geet Sebastian

Comme @devinfoley l'a écrit, vous devez ajouter -Bold au fontName que vous utilisez. Pour moi, cela ne fonctionne pas avec fontNamesForFamilyName, j'utilise plutôt fontWithName:size. Peut-être que cela fonctionne si vous créez le UILabel par programme. Dans mon cas, je mets simplement font à l'intérieur de l'extension de mon UILabel dans awakeFromNib et mets cette extension à class dans Identity Inspector pour mon UILabel spécifique. Avec self.font.pointSize, vous pouvez définir fontSize à l'intérieur de Interface Builder et le gérer mieux si vous avez plus d'éléments d'interface utilisateur.

- (void)awakeFromNib{

    [super awakeFromNib];
    [self setAdjustsFontSizeToFitWidth:YES];
    [self setFont:[UIFont fontWithName:@"Font-Bold" size:self.font.pointSize]];
}

Si votre font ne fonctionne pas, vous devez imprimer tous les fonts de la famille afin de voir si vous avez mal écrit fontName. De cette façon, vous pouvez également vérifier si une police bold est disponible. Si elle n'est pas imprimée, vous ne disposez pas de cette option.

NSLog (@"Available Fonts: %@", [UIFont fontNamesForFamilyName:@"Your Font"]);

Plus d'articles font: https://stackoverflow.com/a/8529661/1141395

1
Alex Cio

Mise à jour rapide

Si vous avez déjà ajouté la police à l'application (comme expliqué ici ), vous pouvez utiliser la fonction extension de Swift avec, par exemple, une variable UILabel et la police Roboto: 

extension UILabel {

    func setFont(style: String, size: Int){
        self.font = UIFont(name: style, size: CGFloat(size))
    }

    struct FontStyle {
        public static let italic: String = "Roboto-LightItalic"
        public static let normal: String = "Roboto-Light"
        public static let thin: String = "Roboto-Thin"
    }
}

Roboto-LightItalic et Roboto-Light sont les noms de fichier de polices du TTF. Ensuite, vous pouvez simplement appeler 

someUILabel.setFont(style: UILabel.FontStyle.normal, size: 20)