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)
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! –
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