Ich versuche, die benutzerdefinierte Schriftart (Bebas Neue) in meiner iOS-Anwendung zu verwenden. Die Schritte, die ich unternommen habe, sind:
Der Code, den ich verwendet habe:
for name in UIFont.familyNames() {
println(name)
if let nameString = name as? String
{
println(UIFont.fontNamesForFamilyName(nameString))
}
}
Der Code, den ich verwendet habe:
textLabel?.font = UIFont(name: "BebasNeueRegular", size: 14)
Screenshots:
Probieren Sie die folgenden Schritte aus: Code getestet in Swift 3
.
Schritt 1 : Hinzufügen Ihrer benutzerdefinierten Schriftart zu Ihrem Projekt (Stellen Sie sicher, dass Zum Ziel hinzufügen angekreuzt). Ich verwende "PermanentMarker.ttf", "Pecita.otf" und "AROLY.ttf" als Testschrift.
Hinweis: Unterstützende Schriftart ttf und otf (Beide Schriftarten sollten funktionieren)
Schritt 2 : Ändern Sie die Datei application-info.plist. Fügen Sie den Schlüssel "Von der Anwendung bereitgestellte Schriftarten" in eine neue Zeile ein und fügen Sie "PermanentMarker.ttf" als neues Element im Array " Von der Anwendung bereitgestellte Schriftarten " hinzu. .
Ihre Liste sollte so aussehen
Jetzt ist die Schriftart im Interface Builder verfügbar. Um die benutzerdefinierte Schriftart in Code zu verwenden, müssen wir sie nach Namen benennen, aber der Name stimmt häufig nicht mit dem Dateinamen der Schriftart überein
Jetzt können Sie über Ihren viewController auf die benutzerdefinierte Schriftart zugreifen. Ich teste die Schriftart, indem ich ein UIlabel wie unten im Storyboard platziere.
Update 2: Working Solution
Nachdem Sie Ihre benutzerdefinierte Schriftart importiert und Ihr plist
aktualisiert haben, wählen Sie label
in Ihrem storyBoard
aus und gehen Sie zu Attributes Inspector
Unter Label
> Text type
> Wählen Sie Attributed
und wählen Sie Ihren custom font
aus der Liste.
Ausgabe:
Update 1
Wenn Ihre benutzerdefinierte Schriftart immer noch nicht in Xcode font list
Aufgeführt ist, überprüfen Sie den entsprechenden Link zu Ihrem Problem
http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/
Benutzerdefinierte Schriftart wird in einigen Simulatoren nicht angezeigt
Hinweis: Trotzdem können Sie Ihrem Label, Ihrer Schaltfläche usw. programmgesteuert BebasNeue
oder custom font
Zuweisen, auch wenn es nicht angezeigt wird in Ihrem interface Builder
. Wenn Sie Probleme haben, die Schriftart programmgesteuert auf Ihr Objekt einzustellen, versuchen Sie die folgende Methode.
Weisen Sie UILabel eine Schriftart zu:
label?.font = UIFont(name: "BebasNeue", size: 35) // Set to any size
Weisen Sie UIButton eine Schriftart zu:
button.titleLabel?.font = UIFont(name: "BebasNeue", size: 35)
Weisen Sie UITextField eine Schriftart zu:
textField.font = UIFont(name: "BebasNeue", size: 25)
Zuweisen einer Schriftart zu UINavigationBar:
navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "BebasNeue", size: 25)!, NSForegroundColorAttributeName: UIColor.red]
Zuweisen einer Schriftart zu UIToolBar:
UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: UIFont(name: "BebasNeue", size: 25.0)!], for: UIControlState.normal)
Ausgabe:
Wenn ich dieselbe Schriftart (Bebas Neue) verwende, stelle ich genau das gleiche Problem fest: Die Schriftart wird in der Schriftartliste für Plain
-Steuerelemente nicht angezeigt.
Es gilt für Attributed
-Steuerelemente, wie in Update 2 in Joes post beschrieben, aber dann ändern Sie tatsächlich die attributedText
anstelle der regulären text
, was zu unerwünschtem Verhalten führen kann. Beispielsweise müssen Sie mit NSMutableAttributedString
arbeiten, um den Text oder die Textfarbe zur Laufzeit zu ändern.
Ich habe diesbezüglich einige Nachforschungen angestellt. Ich habe FontLab Studio verwendet, um die Schriftart zu ändern und einige Tests durchzuführen. Ich habe Bebas Neue Version 1.400 (vom 15. September 2014) von dafont.com verwendet.
Dann änderte ich den Namen in Bebas Neue Whatever: Es funktioniert.
Ich verstehe wirklich nicht, warum dies passiert . Will Apple oder Xcode nicht, dass Sie "Bebas Neue" oder "BebasNeue" im Interface Builder verwenden? Ich hatte die normale Bebas Neue installiert. Vielleicht wurde der Hinweis beschädigt? Ich kann es wirklich nicht sagen. Vielleicht kann jemand auf einem sauberen System versuchen, ob Bebas Neue in ihrem Xcode arbeitet.
Auf jeden Fall habe ich mein Ziel erreicht: Bebas Neue (ich habe die endgültige Version "Bebas Neue MyAppName" genannt) für Plain
-Etiketten und -Schaltflächen verwendet, damit ich meine App so gestalten kann, wie sie ist, und nicht herumschleichen muss zugeordnete Zeichenfolgen.
Schließlich fand ich die Ursache von Problemen mit Bebas Neue-Schriftarten.
Ich erinnere mich nicht, wo ich die Schriften heruntergeladen habe, aber Bebas Neue Schriften sind inkonsistent .
Download d. H. App mit dem Namen Typelight
Öffnen Sie nicht die reguläre , sondern die fette Schrift mit Typelight
.
Sie benötigen die meisten Bebas Neue Schriften korrekt.
Schritte zum Hinzufügen einer Schriftart zu Ihrem Xcode
Wählen Sie Ihr UILabel, UITextField oder was auch immer dann unter Schriftarten aus und folgen Sie den Anweisungen
Schritt 1
Wählen Sie das Einstellungsmenü in der linken Ecke des Bildschirms zur Schriftauswahl. Und wählen Sie die Option Font Manager.
Schritt 2
Klicken Sie auf die Schaltfläche "Hinzufügen" (siehe unten).
Schritt 3
Wählen Sie den Ordner aus, der Ihre Schrift enthält. Es wird in die Liste der XCode-Schriftarten geladen.
Schritte zum Hinzufügen von Schriften zu Ihrem Projekt
Vergessen Sie nicht, der Liste mit dem Schlüssel Fonts provided by application
eine Beschreibung hinzuzufügen und die Zeichensatzdateien in die Ressourcen für das Kopierpaket zu den Projektzieleinstellungen zu legen.
Ja! das ist es .. njoy ..
möglicherweise gibt es einen Unterschied zwischen dem Ordnernamen und dem Schriftartnamen. Die Lösung wäre:
und danach Fontnamen vergleichen.
func printFontsNames() {
let fontFamilyNames = UIFont.familyNames
for familyName in fontFamilyNames {
print("------------------------------")
print("Font Family Name = [\(familyName)]")
let names = UIFont.fontNames(forFamilyName: familyName )
print("Font Names = [\(names)]")
}
}
Sie können tatsächlich nur in zugeordnete Schriftarten gehen und auf das benutzerdefinierte Schriftfenster klicken. Klicken Sie dort oben links auf das Zahnrad und klicken Sie auf die Option Schriftarten verwalten. Ein Fenster sollte oben und oben angezeigt werden, und es sollte ein Pluszeichen angezeigt werden, damit Sie Schriftarten hinzufügen können. Wählen Sie einfach die benutzerdefinierte Schriftart aus, die Sie heruntergeladen haben, z. B. xyz.tff, und dann sollte sie hinzugefügt werden.
Wichtig ist, dass die ttf-Datei sowohl in der p-Liste als auch in Ihrem Projektverzeichnis referenziert werden sollte!
Es war ein alter Fehler seit Xcode 3.x:
es gibt einen Fehler/ein bekanntes Problem mit IB unter XCode 3.x mit nicht standardmäßigen Schriftarten und Interface Builder. Benutzerdefinierte Schriftarten müssen im Allgemeinen programmgesteuert festgelegt werden (über [UIFont fontWithName:]).
Es gibt einige Umgehungsmöglichkeiten wie this mit User Defined Runtime Attribute
und categories
.
Dies ist immer noch ein wiederkehrendes Problem für mich mit Swift 4.2, auch ohne Änderungen vorzunehmen, die dies verursachen würden.
Durch Entfernen der Zeichensatzdateien aus dem Xcode-Projekt und erneutes Hinzufügen wird das Problem behoben (bis zum nächsten Mal).
Ich hatte ein ähnliches Problem
benutzerdefinierte Schriftart hinzugefügt und auch UILabel
zugewiesen - alles funktioniert gut, aber nach ein paar Mal später funktioniert es nicht wie erwartet.
Alle Lösung auszuprobieren, aber nichts funktioniert für mich. Also hier ist meine Lösung, wieder zum vorherigen UILabel
(bereits neu hinzugefügter benutzerdefinierter Zeichensatz) Auswahl -> Beschriftung -> Neu hinzugefügter Zeichensatz auswählen. Überprüfen Sie die anderen Steuerelemente der Benutzeroberfläche.
jetzt funktioniert es gut.
Hoffe, diese Hilfe newDevs ...