2010-08-05 13 views
8

Sto riscontrando un problema nell'impostare il font per UILabels e UITextViews con Interface Builder. Sto provando a impostare il carattere su Gill Sans. Se ho impostato a livello di codice che funziona benissimo, in questo modo:Viene visualizzato il font di UILabel con Interface Builder Helvetica

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

Ma se provo impostazione con Interface Builder, ottengo lo stesso comportamento descritto in questo domanda qui iPhone SDK: Interface Builder label font, only shows when editing label, ma il Gill Sans è presumibilmente accessibile l'iPad (ed è, dal momento che funziona se l'ho impostato dal codice). E se lo eseguo e faccio questo:

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

stampa "Helvetica".

Di solito non mi dispiacerebbe impostarlo a livello di codice, ma il problema è che questa particolare classe viene utilizzata in diversi luoghi con diversi file di pennini per fornire layout diversi, quindi non posso averlo codificato per usare sempre lo stesso famiglia di font. E la sottoclassi per ogni volta che appare sarebbe un enorme dolore, specialmente perché voglio consentire ai designer di creare e modificare tutto il layout con il generatore di interfacce ogni volta che lo desiderano, e se devono dirmi quale carattere vogliono ogni volta, quindi può hardcode ogni caso particolare, sarebbe molto imbarazzante.

Qualcuno ha riscontrato questo problema prima? Forse Interface Builder mi sta limitando ad usare i font iPhone anche se il target del file xib è già impostato su iPad, ma come faccio a convincerlo che sto prendendo di mira l'iPad?

Grazie in anticipo, Filipe

risposta

3

Ok, a quanto pare questo è stato segnalato come un bug con IB 3.2.3:
https://devforums.apple.com/message/236134#236134
Questo ragazzo dice che usato per lavorare su 3.2.2, così vedrò se riesco a declassare, o io' Aspetterò solo una correzione da parte di Apple.

2

È possibile utilizzare solo i caratteri che sono presenti su iPhone OS. Controlla this answer per un modo per incorporare caratteri personalizzati nella tua app.

+1

Sì, lo capisco, ma penso che il font Gill Sans sia presente su iPhone OS 3.2, non è vero? Voglio dire, funziona bene se imposto il font per codice. Il problema è impostarlo con Interface Builder. – filipe

0

La pulizia di tutti gli obiettivi funziona poche volte. Ho dovuto chiudere IB e xcode per ottenere i caratteri nella mia ultima istanza. Sto usando Xcode/IB 3.2.5 e ho usato chalkduster 13pt

HIH

+0

cose fantastiche. Grazie! – mtb

0

Se si utilizza l'approccio sottoclasse UILabel e anche voler mantenere il peso impostato in IB poi uso può fare qualche cosa come di seguito.Non riuscivo a trovare un modo migliore per scoprire se il tipo di carattere esistente è in grassetto, corsivo o regolare

- (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

Partenza categoria IBCustomFonts ho scritto: https://github.com/deni2s/IBCustomFonts

categoria IBCustomFonts consente di utilizzare font personalizzati da Interface Builder (IB) quando si costruisce le vostre applicazioni iOS.

Le app che utilizzano la categoria IBCustomFonts sono approvate dall'Apple App Store (a partire da settembre 2013).

Non è necessario utilizzare IBOutlet, sottoclasse di UILabels e UIButtons o modificare i caratteri nel codice.

Testato su iOS6 e iOS7.

Problemi correlati