2015-02-25 10 views
7

Quindi il carattere personalizzato viene visualizzato correttamente nell'applicazione e in IB quando si utilizza un UILabel con il testo impostato su Normale, ma quando si imposta attribuito, sembra buono in IB ma non nell'app.UILabel visualizza carattere personalizzato errato quando si utilizza l'impostazione del testo attribuito, ma funziona correttamente se impostato nel codice

Uso programmaticamente il carattere personalizzato ovunque con stringhe attribuite e funziona perfettamente.

Ho installato il carattere sul mio mac tramite il libro dei caratteri e ho installato il carattere nella mia app impostando la proprietà corretta in info.plist e nella sezione delle risorse di copia delle fasi di compilazione. Sto anche utilizzando Xcode 6.1.1

ho incluso un sample project che illustra il mio problema

Ecco il codice HTML per l'etichetta nel XIB che è impostato in IB. Come puoi vedere è impostato sul carattere personalizzato.

<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" usesAttributedText="YES" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" 
 
translatesAutoresizingMaskIntoConstraints="NO" id="kpn-Ch-m1y"> 
 
    <rect key="frame" x="20" y="84" width="560" height="100" /> 
 
    <constraints> 
 
    <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="100" id="tyA-gf-Vjj" /> 
 
    </constraints> 
 
    <attributedString key="attributedText"> 
 
    <fragment content="the attack of the chicken lover"> 
 
     <attributes> 
 
     <font key="NSFont" size="11" name="HelveticaNeueLTStd-Cn" /> 
 
     <font key="NSOriginalFont" size="11" name="HelveticaNeueLTStd-Cn" /> 
 
     <paragraphStyle key="NSParagraphStyle" alignment="natural" lineBreakMode="wordWrapping" baseWritingDirection="natural" /> 
 
     </attributes> 
 
    </fragment> 
 
    </attributedString> 
 
    <nil key="highlightedColor" /> 
 
    <variation key="heightClass=compact" ambiguous="YES"> 
 
    <rect key="frame" x="23" y="84" width="554" height="211" /> 
 
    </variation> 
 
    <variation key="heightClass=compact-widthClass=compact" ambiguous="YES"> 
 
    <rect key="frame" x="23" y="84" width="354" height="211" /> 
 
    </variation> 
 
</label>

Ecco cosa succede quando si stampa il contenuto dell'etichetta rinnegati che ha avuto è attributedString trova in IB. Come potete vedere, è accaduto qualcosa tra XIB che lo aveva come un font helvetica condensato per quello che è nell'app, un font regolare helvetica.

2015-02-25 17:35:09.726 FontTest[25984:360263] Helvetica Nueue Condensed{ 
 
    NSColor = "UIDeviceWhiteColorSpace 0 1"; 
 
    NSFont = "<UICTFont: 0x792604b0> font-family: \".HelveticaNeueInterface-Regular\"; font-weight: normal; font-style: normal; font-size: 14.00pt"; 
 
    NSParagraphStyle = "Alignment 0, LineSpacing 0, ParagraphSpacing 0, ParagraphSpacingBefore 0, HeadIndent 0, TailIndent 0, FirstLineHeadIndent 0, LineHeight 0/0, LineHeightMultiple 0, LineBreakMode 4, Tabs (\n 28L,\n 56L,\n 84L,\n 112L,\n 140L,\n 168L,\n 196L,\n 224L,\n 252L,\n 280L,\n 308L,\n 336L\n), DefaultTabInterval 0, Blocks (null), Lists (null), BaseWritingDirection -1, HyphenationFactor 0, TighteningFactor 0, HeaderLevel 0"; 
 
} 
 
(lldb)

enter image description here

+1

Ho lo stesso problema: impostare l'etichetta per utilizzare "testo attribuito" su IB, eseguire l'app e l'etichetta visualizza il carattere errato (sans-serif ... forse il carattere di sistema?). Ripristina il 'testo normale' e il font specificato viene reso. La registrazione del nome di famiglia del font dell'etichetta fornisce il carattere specificato in entrambi i casi! –

+0

Sì, è abbastanza odioso. Sarò fermamente contrario a qualsiasi uso di caratteri personalizzati nei progetti futuri. Ricevo anche errori nei calcoli dell'altezza con caratteri personalizzati che non riesco a ottenere con i caratteri iOS predefiniti, ma questo è un altro problema. – Biclops

risposta

-1

Il font che si imposta nel codice

NSDictionary *attributes = @{NSFontAttributeName: [UIFont fontWithName:@"HelveticaNeueLTStd-Cn" size:17]}; 

e IB quando si cambia a HelveticaNeueLTStd-Cn 17,0

è uguale. Guarda le schermate.

enter image description here

Credo che non è stato impostato il tipo di carattere, come mostrato nella prima immagine.

+0

Nota come il primo e il secondo sono uguali. Non dovrebbero, il primo è il font di sistema 17 e il secondo è impostato su HelveticaNeueLTStd-Cn 17.0. Il terzo è impostato a livello di programmazione su HelveticaNeueLTStd-Cn 17.0 mentre il secondo è impostato su IB. Il secondo e il terzo dovrebbero apparire uguali ma non lo sono. – Biclops

Problemi correlati