2015-02-25 15 views
7

. Tak więc niestandardowa czcionka pojawia się poprawnie w aplikacji i na IB, gdy używam UILabel z tekstem ustawionym na Zwykły, ale gdy ustawię to przypisane, wygląda dobrze w IB, ale nie w aplikacji.UILabel wyświetla czcionkę niestandardową niepoprawną, gdy przypisywane jest ustawienie tekstu, ale działa poprawnie po ustawieniu w kodzie

Programowo używam niestandardowej czcionki wszędzie z przypisanymi ciągami znaków i działa dobrze.

Zainstalowałem czcionkę na moim macu poprzez książkę czcionek i zainstalowałem czcionkę w mojej aplikacji, ustawiając odpowiednią właściwość w sekcji info.plist oraz w sekcji dotyczącej zasobów w fazie kompilacji. Używam również Xcode 6.1.1

podaję sample project ilustrujący mój problem

Oto kod HTML na etykiecie w XIB, który jest ustawiony w IB. Jak widać, jest ustawiona na niestandardową czcionkę.

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

Oto co się dzieje, gdy wydrukować zawartość etykiety renegata, który miał to attributedString ustawić w IB. Jak widać, pomiędzy XIB-em, które ma skondensowaną czcionkę helvetica, a tym, co jest w aplikacji, jest zwykła czcionka 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

Mam ten sam problem: ustaw etykietę, aby używać "przypisanego tekstu" na IB, uruchom aplikację i etykietę wyświetla niewłaściwą czcionkę (sans-serif ... może czcionka systemowa?). Powrót do "zwykłego tekstu" i wyszczególniona czcionka jest renderowana. Zarejestrowanie nazwy rodziny z etykietą czcionki daje w obu przypadkach określoną czcionkę! –

+0

Taa, to dość nieprzyjemne. Będę zdecydowanie przeciwny używaniu niestandardowych czcionek w przyszłych projektach. Dostaję również błędy w obliczeniach wysokości przy użyciu niestandardowych czcionek, których nie otrzymuję po wyjęciu z pudełka czcionek systemu iOS, ale to kolejny problem. – Biclops

Odpowiedz

-1

Czcionka które można ustawić w kodzie

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

i IB kiedy go zmienić na HelveticaNeueLTStd-CN 17,0

jest to samo. Zobacz zrzuty ekranu.

enter image description here

Chyba nie ustawić czcionkę, jak pokazano w pierwszym obrazie.

+0

Zwróć uwagę, że pierwsze i drugie są takie same. Nie powinny, pierwsza to czcionka systemowa 17, a druga to HelveticaNeueLTStd-Cn 17.0. Trzeci jest ustawiony programowo na HelveticaNeueLTStd-Cn 17.0, a drugi na IB. Drugi i trzeci powinien wyglądać tak samo, ale nie są. – Biclops