2016-04-18 18 views
3

Ich versuche einen bestimmten Teil meines Etiketts mit NSMutableAttributedString fett und kursiv zu setzen, aber ich kann nur das eine oder andere bekommen. Die Schriftart, die ich verwende, ist Clear Sans. Das Setzen der gesamten Label-Schriftart auf dem Storyboard auf Bold Italic funktioniert gut, aber ich brauche nur einen Teil davon. So habe ichSet label font mit fett und kursiv

for family in UIFont.familyNames() { 
    print("\(family)\n\t\(UIFont.fontNamesForFamilyName(family))") 
} 

um sicherzustellen, dass es sie gibt, und ich fand

Clear Sans 
    ["ClearSans", "ClearSans-Bold", "ClearSans-Italic"] 

Aus irgendeinem Grund ist es nicht hier, aber es ist im Storyboard. Also habe ich versucht, this answer zu verwenden, aber es stürzt ab, ich nehme aus dem gleichen Grund an, dass ich ClearSans-BoldItalic nicht gefunden habe, aber ich weiß nicht, warum es nicht dort ist.

Schließlich habe ich versucht, nur „Stack“ die beide, wie so

let bold = UIFont(name: "ClearSans-Bold", size: 20) 
let italic = UIFont(name: "ClearSans-Italic", size: 20) 

attributedCaption.addAttribute(NSFontAttributeName, value: bold!, range: (imageContainer.caption as NSString).rangeOfString(matchString)) 
attributedCaption.addAttribute(NSFontAttributeName, value: italic!, range: (imageContainer.caption as NSString).rangeOfString(matchString)) 

aber all dies tut, ist das letzte Attribut, das ist das, was ich erwartet hatte, zu tun.

Gibt es eine andere Methode, die ich verwenden kann, damit ich sowohl fett als auch kursiv auf demselben Teil des Etiketts anzeigen kann?

bearbeiten

Ich wollte meine Schriften enthalten, die in dem Projekt sind, so ist es klar, dass ich sie bereits importiert haben. Das zweite Bild ist die Liste der Schriftarten auf dem Storyboard. Während es vertuscht ist, ist die Familie tatsächlich Clear Sans.

Installed fonts Storyboard options

+1

Versuchen Sie, die Schriftart "Clear Sans Bold Italic" herunterladen. Sie sollten dann 'ClearSans-BoldItalic' verwenden können. https://www.fontsquirrel.com/fonts/clear-sans – kye

+1

Sie können nicht einfach eine beliebige Schriftart im laufenden Betrieb erstellen, indem Sie zuerst ein UIFontDescriptor-Objekt mit gewünschten symbolischen Merkmalen instanziieren und dann eine neue Schriftart aus diesem Deskriptor instanziieren. Die Schriftart, die Sie mit dem Deskriptor beschreiben, muss bereits im System vorhanden sein, unabhängig davon, ob es sich um eine Standardschrift oder um eine Schrift handelt, die Sie manuell hinzugefügt haben. Also einfach fett kursive Version herunterladen, wie kye notiert, fügen Sie es Ihrem Projekt hinzu und verwenden Sie seinen Namen, um eine neue Schriftart zu instanziieren. – Russian

+0

@kye Ich habe gerade die Frage mit einem Screenshot meines Fonts-Ordners aktualisiert. Ich hatte es bereits im Projekt (deshalb taucht es auf dem Storyboard auf), dachte aber nicht daran, das in die Frage aufzunehmen. Vielen Dank! –

Antwort

1

Stellen Sie sicher, fett und kursiv Version wird auch App Info.plist unter UIAppFonts ("Fonts zur Verfügung gestellt durch die Anwendung") Schlüssel hinzugefügt.

0
UIFont.italicSystemFont(ofSize: 15.0) 
UIFont.boldSystemFont(ofSize: 15) 

wenn Sie benutzerdefinierte Schriftart von Label wie Fond-System möchten. Sie können meine Lösung versuchen. es funktioniert gut für schnelle 3