2010-08-05 16 views
8

Tengo un problema al configurar la fuente para UILabels y UITextViews con Interface Builder. Estoy intentando configurar la fuente para Gill Sans. si fijo mediante programación que funciona bien, como esto:Configurando la fuente de UILabel con Interface Builder sale Helvetica

myLabel.font = [UIFont fontWithName:@"Gill Sans" size:24.0]; 

Pero si intento establecer con Interface Builder, consigo mismo comportamiento descrito en esta pregunta aquí iPhone SDK: Interface Builder label font, only shows when editing label, pero la Gill Sans es supuestamente disponible en el iPad (y lo es, ya que funciona si lo configuro por código). Y si lo ejecuto y hago esto:

NSLog(@"%@", myLabel.font.fontName); 

imprime "Helvetica".

Por lo general, no me importaría establecer mediante programación, pero el problema es que esta clase en particular se utiliza en varios lugares diferentes con diferentes archivos nib para proporcionar diferentes diseños, así que no puedo tenerlo codificado para utilizar siempre los mismos Familia tipográfica. Y subclasificarlo cada vez que aparece sería un gran dolor, especialmente porque quiero permitir a los diseñadores crear y cambiar todo el diseño con el constructor de interfaz cuando lo deseen, y si tienen que decirme qué fuente quieren cada vez, así que Puede codificar todos los casos en particular, eso sería muy incómodo.

¿Alguien ha experimentado este problema antes? Quizás Interface Builder me esté limitando a usar las fuentes de iPhone aunque el objetivo del archivo xib ya esté configurado para iPad, pero ¿cómo puedo convencerlo de que estoy apuntando al iPad?

Gracias de antemano, filipe

Respuesta

2

Sólo se pueden utilizar fuentes que están presentes en el iPhone OS. Compruebe this answer para una manera de incrustar fuentes personalizadas en su aplicación.

+1

Sí, entiendo eso, pero creo que la fuente Gill Sans está presente en el iPhone OS 3.2, ¿no? Quiero decir, funciona bien si configuro la fuente por código. El problema es establecerlo con Interface Builder. – filipe

0

Limpiar todos los objetivos funciona pocas veces. Tuve que abandonar IB y xcode para obtener las fuentes en mi última instancia. Estoy usando Xcode/IB 3.2.5 y solía chalkduster 13pt

HIH

+0

cosas increíbles. ¡Gracias! – mtb

0

Si utiliza el enfoque de subclases UILabel y también desea mantener el peso establecido en el IB a continuación, el uso puede hacer algo, como a continuación.No he podido encontrar una mejor manera de averiguar si la fuente existente está en negrita, cursiva o regular

- (void)awakeFromNib 
{ 
    [super awakeFromNib]; 

    NSString *weight = [self.font.fontName substringFromIndex:[self.font.fontName length] - 5]; 
    if ([weight isEqualToString:@"-Bold"]) 
    { 
     self.font = [UIFont fontWithName:@"MyriadWebPro-Bold" size:self.font.pointSize]; 
    } 
    else if ([weight isEqualToString:@"-Italic"]) 
    { 
     self.font = [UIFont fontWithName:@"MyriadWebPro-Italic" size:self.font.pointSize]; 
    } 
    else 
    { 
     self.font = [UIFont fontWithName:@"MyriadWebPro" size:self.font.pointSize]; 
    } 
} 
1

salida categoría IBCustomFonts me escribió: https://github.com/deni2s/IBCustomFonts

categoría IBCustomFonts le permite usar fuentes personalizadas de Interface Builder (IB) en la construcción de sus aplicaciones de iOS.

Las aplicaciones que utilizan la categoría IBCustomFonts están aprobadas por Apple App Store (desde septiembre de 2013).

No es necesario utilizar IBOutlets, subclases de UILabels y UIButtons o cambiar las fuentes en el código.

Probado en iOS6 e iOS7.

Cuestiones relacionadas