2009-08-19 10 views
28

Ho il seguente codice nella mia applicazione.UILabel - impostazione font - typeface a livello di codice in 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]; 

Ora, ho bisogno di sapere,

======> Come impostare "Tipo di carattere bold =" attraverso il codice?

+0

Per "Offset ombra di un'etichetta" si intende la dimensione dell'ombra dell'etichetta? – devinfoley

+0

@flashcards - Ho ottenuto la soluzione senza bisogno di scoprire l'ombra. [tmp sethadowoffset: cgsizemake (1,1)]; –

+2

@sagar Dovresti postarlo come risposta alla tua stessa domanda in modo che venga salvato. Saluti! – devinfoley

risposta

36

È necessario utilizzare il nome del carattere bold all'interno della famiglia. Per scoprire se c'è una versione bold di American Typewriter, provare l'output

[UIFont fontNamesForFamilyName:@"AmericanTypewriter"] 

alla console.

In questo caso, è necessario utilizzare "AmericanTypewriter-Bold".

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

@flashcards: no ho provato la tua logica, ma la mia applicazione si è bloccata. –

+0

Hmmm ... sembra fontNamesForFamilyName è un metodo statico su UIFont che contiene un nome di famiglia. Risolverò la mia risposta ora. Hai provato a utilizzare "AmericanTypewriter-Bold"? – devinfoley

+5

@sagar - Non c'è spazio tra "American Typewriter". Penso che tu abbia messo lo spazio tra di loro. – Brij

20

Cosa succede ad usare la proprietà 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

Questo è utile solo se si desidera utilizzare il carattere di sistema. @Spark non stava usando un font di sistema. –

17

Proprio NSLog Il tipo di carattere che si desidera ottenere:

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

E si ottiene la matrice:

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

Usa ne avete bisogno nel codice:

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

Come @devinfoley scritto, è necessario aggiungere -Bold al fontName che si sta utilizzando. Per me non funziona con fontNamesForFamilyName, invece sto usando fontWithName:size. Forse funziona se si crea lo UILabel in modo programmatico. Nel mio caso sto solo impostando il font all'interno dell'estensione del mio UILabel in awakeFromNib e impostare questa estensione come class nel Identity Inspector per il mio specifico UILabel. Con self.font.pointSize è possibile impostare fontSize all'interno dello Interface Builder e gestirlo meglio se si dispone di più elementi dell'interfaccia utente.

- (void)awakeFromNib{ 

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

Se il font non funziona si deve stampare tutte fonts della famiglia, in modo da poter vedere se hai scritto la fontName sbagliata. In questo modo puoi anche verificare se è disponibile un font bold, se non è stampato non hai questa opzione.

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

Più font roba: https://stackoverflow.com/a/8529661/1141395

2

È possibile ottenere tutti i iOS supportati nomi dei font in questo sito iOSfonts. Prendete anteprima della stringa esatto per trovare il miglior tipo di carattere e utilizzarlo come menzionato in risposte di cui sopra

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

aggiornamento Swift

Se hai già aggiunto il tipo di carattere per l'applicazione (come spiegato here) è possibile utilizzare la funzione di Swift extension con, come esempio, una UILabel e il font 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 e Roboto-Light sono i nomi dei file di font del TTF. Quindi, è possibile chiamare semplicemente

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