Ich habe eine, UIButton
die eine benutzerdefinierte Schriftart verwendet, die beim Laden meiner Ansicht festgelegt wird:
- (void)viewDidLoad
{
[super viewDidLoad];
self.searchButton.titleLabel.font = [UIFont fontWithName: @"FONTNAME" size: 15.0 ];
}
Das Problem, das ich habe, ist, dass die Schriftart scheinbar über der Mittellinie schwebt. Wenn ich diese Zeile auskommentiere, wird die Standardschrift gut vertikal zentriert angezeigt. Wenn Sie jedoch zur benutzerdefinierten Schriftart wechseln, wird die vertikale Ausrichtung unterbrochen.
Ich bekomme das gleiche Problem auch bei einer Tabellenzelle mit einer benutzerdefinierten Schriftart.
Muss ich der Ansicht irgendwo mitteilen, dass die benutzerdefinierte Schriftart nicht so hoch ist wie andere Schriftarten?
BEARBEITEN: Ich habe gerade festgestellt, dass die von mir verwendete Schriftart eine Windows TrueType-Schriftart ist. Ich kann es gut in TextEdit auf dem Mac verwenden, nur ein Problem mit der Ausrichtung in meiner App
Antworten:
Ein ähnliches Problem wurde unter Benutzerdefinierte installierte Schriftart diskutiert , die in UILabel nicht korrekt angezeigt wird . Es wurde keine Lösung angegeben.
Hier ist die Lösung, die für meine benutzerdefinierte Schriftart funktioniert hat, bei der das gleiche Problem in UILabel, UIButton usw. aufgetreten ist. Das Problem mit der Schriftart war die Tatsache, dass ihre Ascender-Eigenschaft im Vergleich zum Wert von Systemschriftarten zu klein war. Ascender ist ein vertikales Leerzeichen über den Schriftzeichen. Um Ihre Schriftart zu korrigieren, müssen Sie die Befehlszeilendienstprogramme der Apple Font Tool Suite herunterladen . Nehmen Sie dann Ihre Schriftart und gehen Sie wie folgt vor:
Dies wird erstellen
Bold.hhea.xml
. Öffnen Sie es mit einem Texteditor und erhöhen Sie den Wert desascender
Attributs. Sie müssen ein wenig experimentieren, um den genauen Wert herauszufinden, der für Sie am besten geeignet ist. In meinem Fall habe ich es von 750 auf 1200 geändert. Führen Sie dann das Dienstprogramm erneut mit der folgenden Befehlszeile aus, um Ihre Änderungen wieder in der ttf-Datei zusammenzuführen:Verwenden Sie dann einfach die resultierende ttf-Schriftart in Ihrer App.
OS X El Capitan
Das Apple Font Tool Suite-Installationsprogramm funktioniert unter OSX El Capitan aufgrund von SIP nicht mehr, da versucht wird, die Binärdateien in einem geschützten Verzeichnis zu installieren. Sie müssen manuell extrahieren
ftxdumperfuser
. Kopieren Sie zuerst das Paket aus dem dmg in ein lokales Verzeichnis und entpacken Sie anschließend dasOS X Font Tools.pkg
mitNavigieren Sie nun in den Ordner
fontTools.pkg
mitNutzlast mit extrahieren
Jetzt befindet sich die
ftxdumperfuser
Binärdatei in Ihrem aktuellen Ordner. Sie können es wie/usr/local/bin/
folgt verschieben, damit Sie es in jedem Ordner innerhalb der Terminalanwendung verwenden können.quelle
Ich habe das Problem beim Anpassen des oberen Inhalts (nicht des Titels!) Inset gelöst.
Zum Beispiel: button.contentEdgeInsets = UIEdgeInsetsMake (10.0, 0.0, 0.0, 0.0);
Viel Glück!
quelle
Sie sind sich nicht sicher, ob dies hilfreich sein wird, da dies möglicherweise von Ihrer Schriftart abhängt. Möglicherweise ist Ihre Grundlinie jedoch falsch ausgerichtet.
quelle
Ich denke, das ist die beste Antwort. Kein Spielen mit Ascender, NumberOfHMetrics usw. ... nur Import-Export durch Glyphs- Anwendung und Job erledigt. Dank dieser Antwort: https://stackoverflow.com/a/16798036/1207684
quelle
Sie können dies im Interface Builder ausprobieren. Hier ist eine Momentaufnahme, wie es geht -
Wie Sie sehen können, hat der Versuch, dies in IB zu tun, seine eigenen Vorteile.
quelle
Spät zur Party, aber als mich dieses Problem zum neunten Mal traf, dachte ich, ich würde die einfachste Lösung veröffentlichen, die ich gefunden habe: die Verwendung von Python FontTools .
Installieren Sie Python 3, wenn es auf Ihrem System nicht verfügbar ist.
Installieren Sie FontTools
pip3 install fonttools
FontTools enthalten ein TTX-Tool, das die Konvertierung in und aus XML ermöglicht.
Konvertieren Sie Ihre Schriftart im selben Ordner in .ttx
ttx myFontFile.otf
Nehmen Sie die erforderlichen Änderungen an .ttx vor und löschen Sie die .otf-Datei, da diese im nächsten Schritt ersetzt wird.
Konvertieren Sie die Datei zurück in .otf
ttx myFontFile.ttx
Motivation: Die Lösung von kolyuchi ist unvollständig, und selbst bei diesem erweiterten Installationsablauf führte das Ausführen
ftxdumperfuser
zu einem Fehler in Catalina 10.15.2.quelle