2009-08-19 4 views
28

J'ai le code suivant dans mon Application.UILabel - paramétrer la police - typer par programme dans l'iPhone

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, je dois savoir,

======> comment définir "Typeface = gras" par le code?

+0

Par "Décalage d'ombre d'une étiquette" voulez-vous dire la taille de l'ombre à paupières de l'étiquette? – devinfoley

+0

@flashcards - J'ai eu la solution pas besoin de savoir pour l'ombre. [tmp setshadowoffset: cgsizemake (1,1)]; –

+2

@sagar Vous devriez publier cela comme une réponse à votre propre question afin qu'elle soit enregistrée. À votre santé! – devinfoley

Répondre

36

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

[UIFont fontNamesForFamilyName:@"AmericanTypewriter"] 

à la console.

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

[UIFont fontNamesForFamilyName:@"AmericanTypewriter-Bold"] 
+0

@flashcards - non J'ai essayé votre logique, mais mon application s'est écrasée. –

+0

Hmmm ... ressemble à fontNamesForFamilyName est une méthode statique sur UIFont qui prend un nom de famille. Je vais réparer ma réponse maintenant. Avez-vous essayé d'utiliser "AmericanTypewriter-Bold"? – devinfoley

+5

@sagar - Il n'y a pas d'espace entre "American Typewriter". Je pense que vous avez mis de l'espace entre eux. – Brij

20

Qu'en est-il en utilisant 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]; 
+0

Ceci n'est utile que si vous voulez utiliser la police système. @Spark n'utilisait pas de police système. –

17

Juste 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" 
) 

Utilisation tout ce dont vous avez besoin dans 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]; 
1

Comme @devinfoley écrit, vous devez ajouter à la -BoldfontName que vous utilisez. Pour moi cela ne fonctionne pas avec fontNamesForFamilyName, mais j'utilise fontWithName:size. Peut-être que cela fonctionne si vous créez le UILabel par programme. Dans mon cas, je suis juste en plaçant le font à l'intérieur de l'extension de mon UILabel en awakeFromNib et définir cette extension comme class dans le Identity Inspector pour mon UILabel spécifique. Avec self.font.pointSize vous pouvez définir le fontSize à l'intérieur du Interface Builder et peut mieux le gérer 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 fonts de la famille, afin que vous puissiez voir si vous avez écrit le fontName mal. De cette façon, vous pouvez également vérifier si une police bold est disponible, si elle n'est pas imprimée vous n'avez pas cette option.

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

Plus font choses: https://stackoverflow.com/a/8529661/1141395

2

Vous pouvez obtenir tous les iOS pris en charge des noms de police dans ce site iOSfonts.Prenez aperçu de votre chaîne exacte pour trouver la meilleure police et l'utiliser comme mentionné 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]; 
0

mise à jour Swift

Si vous avez déjà ajouté la police à l'application (comme expliqué here) vous pouvez utiliser la fonction de Swift extension avec, comme exemple, un 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 police du TTF. Ensuite, vous pouvez simplement appeler

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