In unserem Projekt verwenden wir benutzerdefinierte Schriftarten. Es funktioniert gut in Xcode 5. In Xcode 6 funktioniert es im Klartext, der im Code als Zeichenfolge zugeordnet wird. Die im Storyboard festgelegten Zeichenfolgen werden jedoch alle auf Helvetica zurückgesetzt, wenn sie auf einem Simulator oder Gerät ausgeführt werden, obwohl sie im Storyboard in Ordnung aussehen.
Ich bin nicht sicher, ob es sich um einen Fehler im Xcode 6 oder iOS 8 SDK handelt oder ob die Verwendung benutzerdefinierter Schriftarten in Xcode 6 / iOS 8 geändert wurde.
Antworten:
Die Lösung für mich war, eine
IBDesignable
Klasse zu verwenden:Geben Sie dies im Interface Builder:
Sie können Ihren Attributstring wie gewohnt einrichten, müssen jedoch Ihre Schriftgröße und Schriftfamilie in den neuen verfügbaren Eigenschaften erneut festlegen.
Da der Interface Builder standardmäßig mit der benutzerdefinierten Schriftart arbeitet, erhalten Sie das , was Sie sehen , was ich beim Erstellen von Apps bevorzuge.
Hinweis
Der Grund, warum ich dies anstelle der einfachen Version verwende, ist, dass ich Eigenschaften für die zugewiesene Beschriftung wie den Zeilenabstand festlege, die bei Verwendung des einfachen Stils nicht verfügbar sind.
quelle
@IBInspectable
vorübergehend Attribute anstelle von Schriftart und Größe. Wir haben einemarkdownText
Eigenschaft, da wir die meiste Zeit eine zugeordnete Zeichenfolge für fett gedruckten oder unterstrichenen Text verwenden. Analysieren Sie dann den Markdown-Text in eine zugewiesene Zeichenfolge, wobei die Informationen zu Schriftart und Größe für einfachen Text festgelegt sind.Die einfachste Antwort, die funktioniert hat, ist das Ziehen der Schriftarten in FontBook. Wenn sich die Schriftarten in Ihrem Projekt befinden, jedoch nicht im FontBook Ihres Computers, hat IB manchmal Probleme, sie zu finden. Seltsam, hat aber schon mehrmals für mich gearbeitet.
quelle
Sie können dem Schriftbuch benutzerdefinierte Schriftarten hinzufügen.
Schritt 1 : Klicken Sie auf Schriftarten verwalten. Es öffnet das Schriftbuch.
Schritt 2 : Klicken Sie auf Plus und fügen Sie Ihre Schriftarten hinzu.
Wenn Sie das nächste Mal auf Schriftart mit zugeordnetem Text klicken, wird die neu hinzugefügte Schriftart ebenfalls in der Liste angezeigt. Stellen Sie jedoch sicher, dass Ihre benutzerdefinierte Schriftart in info.plist hinzugefügt wurde, und bündeln Sie die Ressourcen.
quelle
Dank dieses Threads bin ich zu dieser Lösung gekommen:
quelle
Meine Lösung ist ein bisschen umgangen. Die wirkliche Lösung besteht darin, dass Apple Interface Builder repariert.
Damit können Sie den gesamten fett und kursiv gedruckten Text im Interface Builder mit einer Systemschrift markieren und dann zur Laufzeit Ihre benutzerdefinierte Schrift rendern. Möglicherweise nicht in allen Fällen optimal.
Inspiriert von diesem Beitrag
quelle
Ich habe mit diesem Fehler zu kämpfen: UILabel wird in IB mit benutzerdefinierter Schriftart korrekt angezeigt, auf dem Gerät oder Simulator jedoch nicht korrekt (die Schriftart ist im Projekt enthalten und wird in einfachen UILabels verwendet).
Endlich gefunden Attributed String Creator im (Mac) App Store. Generiert Code, der in Ihrer App an der entsprechenden Stelle platziert werden soll. Fantastisch. Ich bin nicht der Schöpfer, nur ein glücklicher Benutzer.
quelle
Das gleiche Problem wurde behoben: Die für TextView im Storyboard festgelegte Attributschriftart funktionierte zur Laufzeit mit XCode 6.1 und iOS 8 SDK nicht.
So habe ich dieses Problem gelöst, könnte eine Problemumgehung für Sie sein:
Öffnen Sie den Attributinspektor Ihrer Textansicht und ändern Sie den Text in "Einfach".
Klicken Sie auf das Kreuz, um das "wC hR" (rot unten) zu löschen.
Ändern Sie den Text in "Attributed", und Sie können dann die Schriftart und Größe für Ihren Text festlegen.
quelle
wC hR
wederUILabel
noch eine Eigenschaft festgelegt istUITextView
.Das gleiche Problem ist aufgetreten: Die Attributschriftart für UILabel im Storyboard hat zur Laufzeit nicht funktioniert. Die Verwendung dieses UIFont + IBCustomFonts.m funktioniert für mich unter https://github.com/deni2s/IBCustomFonts
quelle
Versuchen Sie dies, es wird funktionieren
In meinem Fall, wenn ich versuche, "Silversky Technology" als Attributed Text für Label vom Interface Builder festzulegen, wird es nicht angezeigt, wenn ich im Simulator ausgeführt werde, sondern im Interface Builder. Also habe ich einen Trick verwendet, bei dem ich Silversky-Schrift mit 1 Pixel größer als Technologietext gemacht habe.
Attributtext hat ein Problem mit der gleichen Schriftgröße, also ändern Sie die Größe von 1 Wort. Dieses Ding funktioniert mit mir.
Vielleicht ist das ein Xcode-Fehler, aber dieser Trick funktioniert für mich.
quelle
Dasselbe Problem.
Gelöst: Aktivieren Sie einfach in TextView die Option Auswählbar. Ohne dies habe ich Standard-Systemschriftart.
quelle
Doppelklicken Sie und installieren Sie die Schriftart auf dem System. Es wird funktionieren (Xcode 8.2)
quelle
Die @ Hamidptb-Lösung funktioniert. Stellen Sie sicher, dass Sie den korrekten Namen der Schriftart erhalten (sobald Sie sie dem Schriftbuch hinzugefügt haben).
Öffnen Sie die Schriftbuchanwendung, navigieren Sie zu Ihrer Schriftart und drücken Sie Befehlstaste + I. Das PostScript Name ist der Schriftartname, den Sie hier verwenden möchten:
UILabel.appearance (). Font = UIFont (Name: " PostScriptName ", Größe: 17)
quelle
Ich habe versucht, tableView-Zellen mit Text mit mehreren Absätzen abzurufen. Die zugewiesenen Zeichenfolgen schienen eine Möglichkeit zu sein, zusätzlichen Platz zwischen den Absätzen zu schaffen (etwas, das etwas schöner aussieht, als zwei Zeilenvorschübe in der Zeichenfolge auszuführen). Kam über diesen und andere Beiträge, als ich feststellte, dass die IB-Einstellungen zur Laufzeit nicht zutrafen, als Sie anderen Text in die Zelle einfügen wollten.
Die Hauptsache, die ich mir ausgedacht habe, war das Hinzufügen einer Erweiterung zu String (unter Verwendung von Swift), um einen zugeordneten String mit bestimmten Eigenschaften zu erstellen. In diesem Beispiel wird die Markierungsfilzschrift verwendet, da sie leicht von Helvetica zu unterscheiden ist. Das Beispiel zeigt auch einen kleinen zusätzlichen Abstand zwischen Absätzen, um sie voneinander zu unterscheiden.
Dann senden Sie in meiner benutzerdefinierten tableViewCell den gewünschten Text und konvertieren ihn in eine zugeordnete Zeichenfolge auf dem UILabel.
Im View Controller mit der tableView sollten Sie Ihre Zelle in viewDidLoad () registrieren. Ich habe eine Schreibfeder verwendet, also so etwas wie:
Um herauszufinden, wie hoch die Zelle sein soll, erstellen Sie eine Prototypzelle, die zum Abrufen von Größeninformationen verwendet wird und niemals zur Tabellenansicht hinzugefügt wird. Also, in den Variablen Ihres View Controllers:
Dann in (wahrscheinlich überschreiben - abhängig von Ihrem View Controller) heightForRowAtIndexPath:
Im obigen Code wird die prototypeCell beim ersten Mal ausgefüllt, wenn sie benötigt wird. Die prototypeCell wird dann verwendet, um die Höhe der Zelle nach dem automatischen Größenänderungsprozess zu ermitteln. Sie müssen die Höhe mit der Funktion decken () aufrunden. Ich habe auch einen zusätzlichen Fudge-Faktor hinzugefügt.
Das letzte Codebit gibt an, wie Sie den Text für die Zelle konfigurieren. Für dieses Beispiel einfach:
Hier ist auch eine Aufnahme der Feder. Fixierte die Beschriftung an den Rändern der Zelle (mit dem gewünschten Rand), verwendete jedoch eine Einschränkung "Größer als oder gleich" mit einer Priorität von weniger als "Erforderlich" für die untere Einschränkung.
Stellen Sie die Schriftart des Etiketts auf Attributed ein. Die tatsächliche IB-Schriftart spielte keine Rolle.
Das Ergebnis in diesem Fall:
quelle
Im Falle einer zugewiesenen Zeichenfolge können Sie eine benutzerdefinierte Schriftart in die Schriftartenliste aufnehmen, indem Sie auf das Schriftartensymbol klicken. Daraufhin wird das folgende Dialogfeld angezeigt. Im folgenden Dialogfeld können Sie eine eigene oder eine vorhandene Kategorie für eine benutzerdefinierte Schriftart hinzufügen. zugeschriebener Schriftdialog
Nachdem Sie auf Schriftarten verwalten geklickt haben, wird der folgende Dialog geöffnet. Wählen Sie eine Kategorie in der von Ihnen erstellten oder vorhandenen Kategorie aus. Klicken Sie auf + Zeichen, um der Kategorie eine Schriftart hinzuzufügen. Schriftartdialog verwalten
quelle
Das ist eine einfache und schnelle Lösung und das funktioniert in meinem Fall. Diese Lösung besteht darin, eine Codezeile in didFinishLaunchingWithOptions func in der Datei AppDelegate.swift hinzuzufügen:
für textViews :
für Etiketten :
und für den Rest von UiView wie diese beiden ☝️
quelle
Für alle, die benutzerdefinierte Schriftarten auf zugewiesene Zeichenfolgen im Code anwenden: Versuchen Sie, sie festzulegen
viewDidLayoutSubviews
. Mein Fehler war esviewDidLoad
, es wird dort nicht angewendet.quelle