wake-up-neo.com

Die benutzerdefinierte Schriftart von Xcode 8 wird nicht im Interface Builder angezeigt

Ich versuche, die benutzerdefinierte Schriftart (Bebas Neue) in meiner iOS-Anwendung zu verwenden. Die Schritte, die ich unternommen habe, sind:

  1. Kopieren Sie die .otf-Dateien in das Projekt.
  2. Stellen Sie sicher, dass die .otf-Dateien das Projekt als Ziel festgelegt haben.
  3. Die .otf-Dateien wurden in plist unter 'Von der Anwendung bereitgestellte Schriftarten' hinzugefügt.
  4. In Erstellungsphasen befinden sich die .otf-Dateien in "Ressourcenpakete kopieren".
  5. Installieren Sie die Schrift auf meinem Mac.
  6. Versuchen Sie, alle verfügbaren Schriftarten auszudrucken, meine benutzerdefinierte Schriftart wird jedoch nicht angezeigt.

Der Code, den ich verwendet habe:

for name in UIFont.familyNames() {
  println(name)
  if let nameString = name as? String
  {
    println(UIFont.fontNamesForFamilyName(nameString))
  }
}
  1. Beim Versuch, die Schrift in Code zu setzen, hat es funktioniert.

Der Code, den ich verwendet habe:

textLabel?.font = UIFont(name: "BebasNeueRegular", size: 14)
  1. Aber ich kann es nicht im Interface Builder einstellen. Irgendeine Idee?

Screenshots:

 Font  Font-List

40
chengsam

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

enter image description here

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.

enter image description here

enter image description here

enter image description here

Ausgabe:

enter image description here

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

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:

enter image description here

59
Joe

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.

  • Möglicherweise war die Schriftartdatei irgendwie beschädigt. Erneut gespeichert als .otf und .ttf: funktionierte nicht.
  • Möglicherweise waren die Metadaten des Zeichensatzes beschädigt. Kopiert alle Glyphen in eine neue Schriftart und benennt diese als Bebas Neue: Hat nicht funktioniert.
  • Ich habe die Schriftart von Bebas Neue in BN umbenannt: It works! Aber warum?
  • Möglicherweise können Sie "Neue" nicht in einem Schriftartnamen verwenden (da Helvetica Neue die iOS-Systemschriftart bis iOS 8 war). Die Schriftart wurde in Test Neue umbenannt: funktioniert noch.
  • Vielleicht können Sie "Bebas" dann nicht in einem Schriftnamen verwenden? Die Schriftart wurde in Bebas umbenannt: funktioniert noch.
  • Was ... Nur um sicher zu sein, ich habe den Namen der Schriftart wieder in Bebas Neue geändert: Funktioniert nicht mehr.
  • Ich habe auch BebasNeue ausprobiert: Hat auch nicht funktioniert.
  • Dann änderte ich den Namen in Bebas Neue Whatever: Es funktioniert.

     Bebas Neue Whatever

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.

10
Flitskikker

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.

enter image description here

Sie benötigen die meisten Bebas Neue Schriften korrekt.

5
János

Es ist leicht und einfach jetzt in Xcode 10 und Swift 4.2 getestet

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.

 enter image description here

Schritt 2 

Klicken Sie auf die Schaltfläche "Hinzufügen" (siehe unten).

 enter image description here

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

5
Saranjith

möglicherweise gibt es einen Unterschied zwischen dem Ordnernamen und dem Schriftartnamen. Die Lösung wäre:

  • Druckt alle Standardschriftnamen (ohne benutzerdefinierte Schriftarten)
  • Fügen Sie dem Projekt benutzerdefinierte Schriftarten hinzu.
  • Gibt alle Schriftnamen aus.

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)]")
    }
}
2

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!

2
Andrew Van Beek

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.

0
wj2061

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

0
alstr

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

0
Vishal16