Mam, UIButton
który używa niestandardowej czcionki, która jest ustawiana, gdy mój widok się ładuje:
- (void)viewDidLoad
{
[super viewDidLoad];
self.searchButton.titleLabel.font = [UIFont fontWithName: @"FONTNAME" size: 15.0 ];
}
Problem polega na tym, że czcionka wydaje się unosić w górę z linii środkowej. Jeśli wykomentuję tę linię, domyślna czcionka jest dobrze wyśrodkowana w pionie. Jednak zmiana na czcionkę niestandardową przerywa wyrównanie w pionie.
Ten sam problem występuje również w przypadku komórki tabeli z niestandardową czcionką.
Czy muszę gdzieś powiedzieć widokowi, że czcionka niestandardowa nie jest tak wysoka, jak inne czcionki?
EDYCJA: Właśnie zdałem sobie sprawę, że czcionka, której używam, to czcionka Windows TrueType. Mogę go dobrze używać w TextEdit na Macu, tylko problem z wyrównaniem w mojej aplikacji
Odpowiedzi:
Podobny problem został omówiony w sekcji Niestandardowa zainstalowana czcionka, która nie jest poprawnie wyświetlana w UILabel . Nie podano rozwiązania.
Oto rozwiązanie, które zadziałało dla mojej niestandardowej czcionki, która miała ten sam problem w UILabel, UIButton i tym podobnych. Problem z czcionką polegał na tym, że jej właściwość wznosząca była zbyt mała w porównaniu z wartością czcionek systemowych. Ascender to pionowa spacja nad znakami czcionki. Aby naprawić czcionkę, musisz pobrać narzędzia wiersza poleceń Apple Font Tool Suite . Następnie weź czcionkę i wykonaj następujące czynności:
To stworzy
Bold.hhea.xml
. Otwórz go w edytorze tekstu i zwiększ wartośćascender
atrybutu. Będziesz musiał trochę poeksperymentować, aby znaleźć dokładną wartość, która będzie dla Ciebie najlepsza. W moim przypadku zmieniłem go z 750 na 1200. Następnie uruchom narzędzie ponownie, używając następującego wiersza poleceń, aby scalić zmiany z powrotem w pliku ttf:Następnie po prostu użyj powstałej czcionki ttf w swojej aplikacji.
OS X El Capitan
Instalator Apple Font Tool Suite nie działa już w systemie OSX El Capitan z powodu SIP, ponieważ próbuje zainstalować pliki binarne w chronionym katalogu. Musisz ręcznie wyodrębnić
ftxdumperfuser
. Pierwsza kopia PKG z DMG do katalogu lokalnego potem RozpakujOS X Font Tools.pkg
zTeraz przejdź do folderu za
fontTools.pkg
pomocąWyodrębnij ładunek za pomocą
Teraz
ftxdumperfuser
plik binarny znajduje się w Twoim bieżącym folderze. Możesz go przenieść do/usr/local/bin/
, aby móc go używać w każdym folderze w aplikacji terminala, wykonując następujące czynności.źródło
Rozwiązałem problem dopasowując górną zawartość (nie tytuł!) Wstawkę.
Na przykład: button.contentEdgeInsets = UIEdgeInsetsMake (10,0, 0,0, 0,0, 0,0);
Powodzenia!
źródło
Nie jestem pewien, czy to pomoże, ponieważ może to zależeć od czcionki, ale może to oznaczać, że linia bazowa jest źle wyrównana.
źródło
Myślę, że to najlepsza odpowiedź. bez zabawy z ascender, numberOfHMetrics itp ... po prostu importuj-eksportuj przez aplikację Glyphs i gotowe. Dzięki tej odpowiedzi: https://stackoverflow.com/a/16798036/1207684
źródło
Możesz to wypróbować w programie Interface Builder. Oto migawka, jak to zrobić -
Jak widać, próba zrobienia tego w IB ma swoje zalety.
źródło
Spóźniłem się na imprezę, ale ponieważ ten problem dotarł do mnie po raz n-ty, pomyślałem, że opublikuję najprostsze rozwiązanie, jakie znalazłem: użycie Python FontTools .
Zainstaluj Python 3, jeśli nie jest dostępny w twoim systemie.
Zainstaluj FontTools
pip3 install fonttools
FontTools zawiera narzędzie TTX, które umożliwia konwersję do iz XML.
Przekonwertuj swoją czcionkę na .ttx w tym samym folderze
ttx myFontFile.otf
Dokonaj niezbędnych zmian w .ttx i usuń plik .otf, ponieważ zostanie on zastąpiony w następnym kroku.
Przekonwertuj plik z powrotem na .otf
ttx myFontFile.ttx
Motywacja: rozwiązanie przez kolyuchi jest niekompletna, a nawet z tej rozszerzonej przepływu instalacji , prowadzenie
ftxdumperfuser
spowodowało błędu 10.15.2 Catalina.źródło