Chciałbym, aby aplikacja zawierała niestandardową czcionkę do renderowania tekstu, ładowała go, a następnie używała ze standardowymi UIKit
elementami, takimi jak UILabel
. czy to możliwe?
ios
cocoa-touch
fonts
Airsource Ltd
źródło
źródło
Odpowiedzi:
Obsługują to iOS 3.2 i nowsze. Prosto z dokumentu Co nowego w iPhone OS 3.2 :
Po ustawieniu czcionek w
Info.plist
, możesz używać własnych czcionek jak każdej innej czcionki w IB lub programowo.Na forach programistów Apple jest ciągły wątek:
https://devforums.apple.com/thread/37824 (wymagane logowanie)
Oto doskonały i prosty 3-krokowy samouczek, jak to osiągnąć (usunięto uszkodzony link)
Info.plist
pliku o nazwieUIAppFonts
.UIAppFonts
tablicyInfo.plist
[UIFont fontWithName:@"CustomFontName" size:12]
aby uzyskać niestandardową czcionkę do użycia z UILabels i UITextViews itp.Ponadto: upewnij się, że czcionki znajdują się w zasobach pakietu kopii.
źródło
Edycja: Począwszy od iOS 3.2, ta funkcja jest wbudowana. Jeśli potrzebujesz obsługiwać wersję wcześniejszą niż 3.2, możesz nadal korzystać z tego rozwiązania.
Stworzyłem prosty moduł, który rozszerza
UILabel
i obsługuje ładowanie plików .ttf. Wydałem to opensource na licencji Apache i umieściłem na github tutaj.Ważnymi plikami są
FontLabel.h
iFontLabel.m
.Wykorzystuje część kodu z odpowiedzi Genericricha .
Przeglądaj źródło tutaj.
LUB
Skopiuj plik czcionek do zasobów
Dodaj klucz do
Info.plist
pliku o nazwie UIAppFonts. („Czcionki dostarczane przez aplikację)Uczyń ten klucz tablicą
Dla każdej posiadanej czcionki wprowadź pełną nazwę pliku czcionki (w tym rozszerzenie) jako elementy tablicy UIAppFonts
Zapisać
Info.plist
Teraz w aplikacji można po prostu zadzwonić
[UIFont fontWithName:@"CustomFontName" size:15]
, aby uzyskać niestandardowe czcionki używać zUILabels
iUITextViews
, etc ...Po więcej informacji
źródło
Istnieje prosty sposób używania niestandardowych czcionek w systemie iOS 4 .
Chalkduster.ttf
) do folderu Zasoby projektu w XCode.info.plist
i dodaj nowy klucz o nazwieUIAppFonts
. Typem tego klucza powinna być tablica.Chalkduster.ttf
).[UIFont fontWithName:@"Chalkduster" size:16]
w swojej aplikacji.Niestety IB nie pozwala na inicjowanie etykiet niestandardowymi czcionkami. Zobacz to pytanie, aby rozwiązać ten problem. Moim ulubionym rozwiązaniem jest użycie niestandardowej
UILabel
podklasy:źródło
W Info.plist dodaj wpis „Czcionki dostarczone przez aplikację” i dołącz nazwy czcionek jako ciągi znaków:
Następnie sprawdź, czy Twoja czcionka jest uwzględniona, uruchamiając:
Pamiętaj, że nazwa pliku ttf może nie być tą samą nazwą, której używasz podczas ustawiania czcionki dla swojej etykiety (możesz użyć powyższego kodu, aby uzyskać parametr „fontWithName”):
źródło
edycja: Ta odpowiedź jest nieaktualna od iOS3.2; użyj UIAppFonts
Jedynym sposobem, w jaki udało mi się pomyślnie załadować niestandardowe
UIFont
s, jest prywatna platforma GraphicsServices.Następujące załaduje wszystkie
.ttf
czcionki w głównym pakiecie aplikacji:Po załadowaniu czcionek można ich używać tak samo, jak czcionek dostarczonych przez Apple:
GraphicsServices można nawet załadować w czasie wykonywania na wypadek, gdyby interfejs API zniknął w przyszłości:
źródło
[NSString sizeWithFont:[UIFont fontWithName:@"customFont" size:14]];
zwraca 0 szerokości i wysokości dla wszystkich niestandardowych czcionek, które próbowałem.Za pomocą
iOS 8
+ iXcode 6
+ możesz to łatwo zrobić. Oto kroki:1) Przeciągnij i upuść czcionkę w
Xcode
folderze Obsługa plików. Nie zapomnij zaznaczyć swojej aplikacji w sekcji Dodaj do celów . Od tego momentu możesz używać tej czcionkiIB
i wybierać ją z palety czcionek.2) Aby udostępnić tę czcionkę w urządzeniu, otwórz
info.plist
i dodajFonts provided by application
klucz. Będzie on zawierał klucz pozycji 0, musisz dodać nazwę czcionki jako wartość. Nazwa czcionki może różnić się od nazwy pliku czcionki. Ale najpierw spróbuj dodać swoją nazwę pliku w większości przypadków, to działa.Jeśli nie, ten artykuł zawsze mi pomógł.
Oto krótki fragment kodu z tego artykułu, który pomaga znaleźć nazwę czcionki.
EDYTOWAĆ
Chcę wspomnieć, że musisz dodać pliki czcionek do faz kompilacji celu , skopiuj zasoby pakietu . Bez tego nie zobaczysz swojej czcionki na urządzeniu. I może to prowadzić do nieoczekiwanego zachowania.
Na przykład napotkałem
bug
, gdyUITextField
mam niestandardową czcionkę, ale tej czcionki nie było w zasobach pakietu kopii . A kiedy przechodzę doviewcontroller
tegotextfield
, jest opóźnienie około 4 sekund przedviewDidLoad
wywołaniem funkcji. Rozwiązywanie problemów z czcionkami usunęło to opóźnienie. Dlatego zalecamy sprawdzenie go dwa razy. (rdar: // 20028250) Przy okazji nie udało mi się odtworzyć błędu, ale jestem pewien, że problem dotyczył czcionki.źródło
Zrobiłem to tak:
Załaduj czcionkę:
Teraz
drawRect:
zrób coś takiego:Zasadniczo musisz wykonać brutalną pętlę przez tekst i błąkać się z magiczną liczbą, aby znaleźć przesunięcie (tutaj, zobacz mnie za pomocą 29) w czcionce, ale to działa.
Musisz także upewnić się, że czcionka jest prawnie osadzalna. Większość z nich nie ma i są prawnicy specjalizujący się w tego rodzaju sprawach, więc ostrzegajcie.
źródło
CGContextShowTextAtPoint()
- chociaż nie działa z UTF-8.Tak, możesz dołączyć niestandardowe czcionki. Zapoznaj się z dokumentacją UIFont, w szczególności z
fontWithName:size:
metodą.1) Upewnij się, że umieściłeś czcionkę w folderze zasobów.
2) „Nazwa” czcionki niekoniecznie jest nazwą pliku.
3) Upewnij się, że masz prawne prawo do używania tej czcionki. Dołączając go do swojej aplikacji, rozpowszechniasz go i musisz mieć do tego prawo.
źródło
Jeśli używasz
xcode 4.3
, trzeba dodaćfont
doBuild Phase
niedostatecznieCopy Bundle Resources
według https://stackoverflow.com/users/1292829/arne w wątku, niestandardowe czcionki Xcode 4.3 . To zadziałało dla mnie, oto kroki, które wykonałem, aby niestandardowe czcionki działały w mojej aplikacji:OTF
(lubTTF
) do nowej grupy, którą utworzyłem i zaakceptowałem wybór xcodecopying the files over to the project folder
.UIAppFonts
tablicę z czcionkami wymienionymi jako elementy w tablicy. Tylko rozszerzenienames
, a nie rozszerzenie (np. „GothamBold
”, „GothamBold-Italic
”).project name
drogę u góryProject Navigator
po lewej stronie ekranu.Build Phases
zakładkę, która pojawi się w głównym obszarze xcode.Copy Bundle Resources
sekcję „ ” i kliknij,"+"
aby dodać czcionkę."+"
.add to the project
.źródło
Oto instrukcje krok po kroku, jak to zrobić. Nie potrzebujesz dodatkowej biblioteki ani żadnego specjalnego kodowania.
http://shang-liang.com/blog/custom-fonts-in-ios4/
Najczęściej problem dotyczy czcionki, a nie metody. Najlepszym sposobem na to jest użycie czcionki, która na pewno będzie działać, na przykład verdana lub geogia. Następnie zmień czcionkę na zamierzoną. Jeśli to nie działa, być może nazwa czcionki jest nieprawidłowa lub czcionka nie jest dobrze sformatowaną czcionką.
źródło
Dodanie nowej czcionki do istniejącej aplikacji na iOS jest bardzo łatwe.
Musisz tylko dodać czcionkę, np. Font.ttf, do swojego folderu zasobów.
Otwórz aplikację
info.plist
. Dodaj nowy wiersz jako „Czcionki dostarczone przez aplikację” i wpisz nazwę czcionki jako font.ttf.A ustawiając czcionkę, rób tak samo
setFont:"corresponding Font Name"
Możesz sprawdzić, czy twoja czcionka została dodana, czy nie
NSArray *check = [UIFont familyNames];
.Zwraca całą czcionkę obsługiwaną przez aplikację.
źródło
Polecam wykonanie jednego z moich ulubionych krótkich samouczków tutaj: http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/, z którego pochodzą te informacje.
Krok 1 - Przeciągnij .ttf lub .otf z Findera do swojego projektu
UWAGA - Pamiętaj, aby kliknąć pole „Dodaj do celów” w głównym celu aplikacji
Jeśli zapomniałeś kliknąć, aby dodać go do celu kliknij na plik czcionki w hierarchii projektu, a na prawym panelu bocznym kliknij Głównym celem aplikacji w docelowa Membership sekcji
Aby upewnić się, że czcionki są częścią celu aplikacji, upewnij się, że są wyświetlane w zasobach pakietu kopii w fazie kompilacji
Krok 2 - Dodaj nazwy plików czcionek do swojego Plist
Przejdź do niestandardowych właściwości celu iOS w sekcji informacyjnej i dodaj klucz do elementów w tej sekcji o nazwie
Fonts provided by application
(powinieneś zobaczyć, że pojawia się jako opcja podczas pisania i ustawia się jako tablica. Kliknij małą strzałkę aby otworzyć elementy tablicy i wpisać nazwy dodanych plików .ttf lub .otf, aby poinformować aplikację, że są to pliki czcionek, które mają być dostępneUWAGA - jeśli aplikacja ulega awarii bezpośrednio po tym kroku, sprawdź pisownię na dodawanych tutaj elementach
Krok 3 - Znajdź nazwy swoich czcionek, aby móc je wywoływać
Dość często nazwa czcionki widoczna w Twojej aplikacji różni się od tego, co Twoim zdaniem opiera się na nazwie pliku tej czcionki, umieść to w kodzie i przejrzyj dziennik tworzony przez aplikację, aby zobaczyć, jaką nazwę czcionki wywołać w kodzie
Szybki
Cel C
Twój dziennik powinien wyglądać mniej więcej tak:
Krok 4 - Użyj nowej niestandardowej czcionki, używając nazwy z kroku 3
Szybki
Cel C
źródło
Znajdź TTF w wyszukiwarce i „Uzyskaj informacje”. Pod nagłówkiem „Pełna nazwa:” otrzymałem nazwę, której użyłem
fontWithName
(właśnie skopiowałem i wkleiłem dokładną nazwę, w tym przypadku nie było konieczne rozszerzenie „.ttf”).źródło
Nie jest jeszcze dostępny, ale następna wersja cocos2d (framework do gry 2d) będzie obsługiwać czcionki bitmapowe o zmiennej długości jako mapy znaków.
http://code.google.com/p/cocos2d-iphone/issues/detail?id=317
Autor nie ma ustalonej daty premiery dla tej wersji, ale widziałem post, który wskazywałby, że będzie to za miesiąc lub dwa.
źródło
Jedna ważna uwaga: powinieneś używać „nazwy PostScript” powiązanej z czcionką, a nie jej pełnej nazwy lub nazwiska. Ta nazwa często może różnić się od zwykłej nazwy czcionki.
źródło
wykonaj ten krok
1) Skopiuj czcionkę do swojego projektu
2) otwórz
.plist
plik w trybie kodu źródłowego ... (Uwaga - nie otwierajinfo.plist
)3) Wcześniej - kliknij czcionkę prawym przyciskiem myszy i otwórz ją w fontforge lub podobnym edytorze oraz
install
w systemie, powinna byćinstall
4) Wpisz to
5) Wpisz ten kod w swoim
class .m
Tutaj lblPoints zostaną zmienione od twojego
UILabel
Gotowy!! Jeśli nadal nie działa twoja czcionka, najpierw sprawdź kompatybilność czcionek
źródło
info.plist
?Może autor zapomniał nadać czcionce nazwę Mac FOND ?
Możesz także wypróbować opcję „Apple” w oknie eksportu.
ZASTRZEŻENIE : Nie jestem programistą iPhone'ów!
źródło
Wypróbowałem różne sugestie na tej stronie w iOS 3.1.2 i oto moje wnioski:
Zwykłe używanie
[UIFont fontWithName:size:]
czcionek w katalogu Resources nie będzie działać, nawet jeśli nazwa FOND jest ustawiona za pomocą FontForge.[UIFont fontWithName:size:]
będzie działać, jeśli czcionki zostaną załadowane najpierw za pomocą GSFontAddFromFile. AleGSFontAddFromFile
nie jest częścią iOS 3.1.2, więc musi być dynamicznie ładowany zgodnie z opisem @rpetrich.źródło
Sprawdzać
ATSApplicationFontsPath
Prosta pozycja listy plist, która pozwala dołączyć pliki czcionek do folderu zasobów aplikacji i „po prostu działają” w aplikacji.
źródło
Kilka porad na tej stronie połączyłem w coś, co działa dla mnie na iOS 5.
Najpierw musisz dodać niestandardową czcionkę do swojego projektu. Następnie postępuj zgodnie z radą @iPhoneDev i dodaj czcionkę do pliku info.plist.
Po wykonaniu tej czynności działa:
Musisz jednak znać nazwę Postscriptową swojej czcionki. Postępuj zgodnie z radą @Daniela Wooda i naciśnij Command-i, gdy jesteś w FontBook.
Następnie ciesz się niestandardową czcionką.
źródło
Najpierw dodaj czcionkę w formacie .odt do swoich zasobów, w tym przypadku użyjemy DINEngschriftStd.otf, a następnie użyjemy tego kodu, aby przypisać czcionkę do etykiety
Aby upewnić się, że czcionka jest załadowana do projektu, wystarczy zadzwonić
Na .plist musisz zadeklarować czcionkę. Wystarczy dodać rekord „Czcionki dostarczone przez aplikację” i dodać ciąg 0 pozycji z nazwą czcionki (DINEngschriftStd.otf)
źródło
Dla iOS 3.2 i nowszych: użyj metod dostarczonych przez kilka powyżej, które są:
[UIFont fontWithName:@"Real Font Name" size:16]
w swojej aplikacji.ALE „Prawdziwa nazwa czcionki” nie zawsze jest taka, jak w Fontbooku. Najlepszym sposobem jest zapytanie urządzenia, jakie czcionki widzi i jakie są dokładne nazwy.
Używam grabera nazw uifont opublikowanego na: grabber nazw uifont
Po prostu upuść czcionki, które chcesz, do projektu xcode, dodaj nazwę pliku do listy odtwarzania i uruchom ją na urządzeniu, dla którego budujesz, a prześle Ci pocztą e-mail pełną listę czcionek, używając nazw, które się
UIFont fontWithName:
spodziewają.źródło
Lepszym rozwiązaniem jest dodanie nowej właściwości
Fonts provided by application
doinfo.plist
pliku.Następnie możesz użyć niestandardowej czcionki jak zwykle
UIFont
.źródło
Istnieje nowy sposób korzystania z niestandardowych czcionek, zaczynając od iOS 4.1. Pozwala na dynamiczne ładowanie czcionek, niezależnie od tego, czy pochodzą one z plików zawartych w aplikacji, pobranych danych, czy też mają to, co masz. Pozwala także ładować czcionki zgodnie z potrzebami, podczas gdy stara metoda ładuje je wszystkie podczas uruchamiania aplikacji, co może trwać zbyt długo, jeśli masz wiele czcionek.
Nowa metoda została opisana w ios-dynamic-font-loading
Korzystasz z
CTFontManagerRegisterGraphicsFont
funkcji, nadając jej bufor z danymi czcionek. Jest on następnie dostępny dlaUIFont
widoków internetowych, podobnie jak w starej metodzie. Oto przykładowy kod z tego linku:źródło
kCTFontManagerErrorAlreadyRegistered
: „Plik został już zarejestrowany w określonym zakresie”. developer.apple.com/library/ios/#documentation/Carbon/Reference/…Szybki, kodowy sposób: (działa również z swift 2.0)
Dodaj wymagane czcionki do projektu (podobnie jak dodawanie obrazów, po prostu przeciągnij do Xcode), upewnij się, że są one skierowane do twojego projektu,
dodaj tę metodę i załaduj niestandardowe czcionki (zalecane w
appDelegate didFinishLaunchingWithOptions
)Użyj przykładu:
Użyj czcionki:
źródło
Możesz dodać wymagane pliki „FONT” w folderze zasobów. Następnie przejdź do
Info.plist
pliku projektu i użyj KLUCZOWEGO „Czcionki dostarczonej przez aplikację” i wprowadź wartość „NAZWA CZCIONKI”.Następnie możesz wywołać metodę
[UIFont fontwithName:@"FONT NAME" size:12];
źródło
Zrobiłem wszystko, ale nowe czcionki się nie pojawiają, więc znalazłem rozwiązanie:
Podczas przeciągania plików fot (otf lub ttf) NIE zapomnij zaznaczyć pola wyboru w sekcji „Dodaj do celów”.
Po wykonaniu tej czynności pojawi się czcionka i wszystko będzie działać poprawnie.
źródło
Chociaż niektóre z powyższych odpowiedzi są poprawne, napisałem szczegółowy samouczek wizualny dla osób, które nadal mają problemy z czcionkami.
Rozwiązania powyżej, które każą Ci dodać czcionkę do listy i używać
są poprawne. Proszę, skorzystaj teraz w jakikolwiek inny sposób. Jeśli nadal masz problemy ze znalezieniem nazw czcionek i ich dodaniem, oto samouczek -
Używanie niestandardowych czcionek w aplikacji iOS
źródło
tak, możesz użyć niestandardowej czcionki w swojej aplikacji
krok po kroku następująco:
Dodaj niestandardowe pliki czcionek do projektu w plikach pomocniczych
Dodaj klucz do pliku Info.plist o nazwie UIAppFonts.
Uczyń ten klucz tablicą
Dla każdej posiadanej czcionki wprowadź pełną nazwę pliku czcionki (w tym rozszerzenie) jako elementy tablicy UIAppFonts
Zapisz Info.plist Teraz w swojej aplikacji możesz po prostu wywołać [UIFont fontWithName: @ „Twoja niestandardowa nazwa czcionki” rozmiar: 20], aby uzyskać niestandardową czcionkę do użycia z UILabels po zastosowaniu tego, jeśli nie uzyskasz właściwej czcionki, a następnie kliknij dwukrotnie na niestandardowej czcionce i uważnie zobacz, jak nadchodzi górna nazwa czcionki i skopiuj tę czcionkę, wklej tutaj [UIFont fontWithName: @ „tutaj obok niestandardowej nazwy czcionki” rozmiar: 20]
mam nadzieję, że dostaniesz poprawną odpowiedź
źródło
tak, możesz użyć niestandardowej czcionki w swojej aplikacji
krok po kroku następująco:
Info.plist
pliku o nazwie UIAppFonts.Info.plist
teraz w swojej aplikacji, możesz po prostu zadzwonić,[UIFont fontWithName:@"your Custom font Name" size:20]
aby uzyskać niestandardową czcionkę do użycia z TwojąUILabels
po zastosowaniu tego, jeśli nie otrzymujesz poprawnej czcionki, kliknij dwukrotnie niestandardową czcionkę i zobacz uważnie, że nadchodzi górna nazwa czcionki i skopiuj tę czcionkę, wklej, tutaj
[UIFont fontWithName:@" here past your Custom font Name" size:20]
mam nadzieję, że otrzymasz poprawną odpowiedźźródło