2009-08-19 10 views
28

Tengo el siguiente código en mi aplicación.UILabel - configuración de fuente - tipo de letra programáticamente en 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]; 

Ahora, necesito saber,

======> Cómo establecer "Tipo de letra negrita =" a través de código?

+0

Por "Desplazamiento de la sombra de una etiqueta" ¿se refiere al tamaño de la sombra de la etiqueta? – devinfoley

+0

@flashcards - Tengo la solución, no es necesario que averigüe por la sombra. [tmp setshadowoffset: cgsizemake (1,1)]; –

+2

@sagar Deberías publicar eso como respuesta a tu propia pregunta para que se guarde. ¡Aclamaciones! – devinfoley

Respuesta

36

Deberá usar el nombre de la fuente bold dentro de la familia. Para averiguar si hay una versión bold de American Typewriter, trate de dar salida a

[UIFont fontNamesForFamilyName:@"AmericanTypewriter"] 

a la consola.

En este caso, debe usar "AmericanTypewriter-Bold".

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

@flashcards - no Probé tu lógica, pero mi aplicación se bloqueó. –

+0

Hmmm ... parece que fontNamesForFamilyName es un método estático en UIFont que toma el nombre de una familia. Voy a arreglar mi respuesta ahora. ¿Intentó usar "AmericanTypewriter-Bold"? – devinfoley

+5

@sagar - No hay espacio entre "American Typewriter". Creo que has puesto espacio entre ellos. – Brij

20

Qué acerca del uso de la propiedad 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

Esto solo es útil si desea usar la fuente del sistema. @Spark no estaba usando una fuente del sistema. –

17

Sólo NSLog la fuente que desea obtener:

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

Y se obtiene la matriz:

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

Uso cualquiera que necesite en el Código:

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

Como @devinfoley escribió, hay que añadir a la -BoldfontName que está utilizando. Para mí no funciona con fontNamesForFamilyName, sino que estoy usando fontWithName:size. Tal vez funcione si crea el UILabel programáticamente. En mi caso, solo estoy configurando el font dentro de la extensión de mi UILabel en awakeFromNib y configuré esta extensión como class en el Identity Inspector para mi UILabel específico. Con self.font.pointSize puede configurar el fontSize dentro del Interface Builder y puede manejarlo mejor si tiene más elementos de IU.

- (void)awakeFromNib{ 

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

Si su font no funciona debe imprimir todos fonts de la familia, para que pueda ver si escribió la fontName mal. De esta manera también puede verificar si hay disponible una fuente bold; si no está impresa, no tiene esta opción.

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

Más font cosas: https://stackoverflow.com/a/8529661/1141395

2

Usted puede obtener todos los iOS compatibles nombres de fuentes en este sitio iOSfonts.Tome vista previa de la cadena exacta para encontrar la mejor fuente y usarlo como se menciona en las respuestas anteriores

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

actualización Swift

Si ya ha añadido la fuente a la aplicación (como se explica here) puede utilizar la función de Swift con extension, como ejemplo, un UILabel y la fuente 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 y Roboto-Light son los nombres de archivo de fuente TTF. Entonces, simplemente puede llamar al

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