Szukaj…


Osadzanie niestandardowych czcionek

Obsługa niestandardowych czcionek
Aplikacje, które chcą używać niestandardowych czcionek, mogą teraz umieszczać te czcionki w pakiecie aplikacji i rejestrować je w systemie, włączając klucz UIAppFonts do pliku Info.plist. Wartością tego klucza jest tablica ciągów znaków identyfikujących pliki czcionek w pakiecie aplikacji. Gdy system zobaczy klucz, ładuje określone czcionki i udostępnia je aplikacji.

Po ustawieniu czcionek w Info.plist możesz używać własnych czcionek jak każdej innej czcionki w IB lub programowo.

  1. Przeciągnij i upuść czcionkę w folderze plików obsługujących Xcode. Nie zapomnij zaznaczyć swojej aplikacji w sekcji „Dodaj do celów”. Od tego momentu możesz używać tej czcionki w IB i wybierać ją z palety czcionek.

wprowadź opis zdjęcia tutaj

  1. Aby udostępnić tę czcionkę na urządzeniu, otwórz Info.plist i dodaj Fonts provided by application key (UIAppFonts). Dodaj nazwę czcionki jako wartość do klawisza Pozycja 0. Uwaga: Nazwa czcionki może różnić się od nazwy pliku czcionki. wprowadź opis zdjęcia tutaj
  1. Uzyskaj niestandardową dodaną nazwę czcionki, używając poniższego fragmentu

[ Swift 3 ]

for family in UIFont.familyNames {
            print("\(family)")

            for name in UIFont.fontNames(forFamilyName: family) {
                print("   \(name)")
            }
        }

[ Cel - C ]

for (NSString *familyName in [UIFont familyNames]){
        NSLog(@"Family name: %@", familyName);
        for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
            NSLog(@"--Font name: %@", fontName);
        }
    }

Niestandardowe czcionki z Storyboard

Niestandardowe czcionki dla składników interfejsu użytkownika z serii ujęć można łatwo uzyskać dzięki zdefiniowanym przez użytkownika atrybutom środowiska wykonawczego w serii ujęć i kategoriach .

Korzyści są jak

  • Nie ma potrzeby definiowania gniazd dla elementu interfejsu użytkownika
  • Nie trzeba programowo ustawiać czcionki dla elementów.

Kroki do naśladowania

  1. Plik czcionek: Dodaj plik czcionek (.ttf) do pakietu aplikacji i dodaj pozycję czcionki w Info.plist w obszarze Czcionka dostarczona przez aplikację, jak w tej dokumentacji czcionek niestandardowych.

  2. Zdefiniuj kategorie: dodaj plik taki jak UIKit + IBExtensions i dodaj kategorie elementów interfejsu użytkownika, takich jak UILabel, UIButton itp., Dla których chcesz ustawić niestandardową czcionkę. Wszystkie kategorie będą miały niestandardową właściwość fontName . Będzie to później używać w serii ujęć do ustawiania niestandardowej czcionki (jak w kroku 4).

UIKit + IBExtensions.h

#import <UIKit/UIKit.h>

//Category extension for UILabel
@interface UILabel (IBExtensions)

@property (nonatomic, copy) NSString *fontName;
@end

// Category extension for UITextField
@interface UITextField (IBExtensions)

@property (nonatomic, copy) NSString *fontName;
@end

// Category extension for UIButton
@interface UIButton (IBExtensions)

@property (nonatomic, copy) NSString *fontName;
@end
  1. Getters and Setters: Zdefiniuj gettery i settery dla właściwości fontName dla każdej dodanej kategorii.

UIKit + IBExtensions.m

#import "UIKit+IBExtensions.h"

@implementation UILabel (IBExtensions)

- (NSString *)fontName {
    return self.font.fontName;
}

- (void)setFontName:(NSString *)fontName {
    self.font = [UIFont fontWithName:fontName size:self.font.pointSize];
}
@end

@implementation UITextField (IBExtensions)

- (NSString *)fontName {
    return self.font.fontName;
}

- (void)setFontName:(NSString *)fontName {
    self.font = [UIFont fontWithName:fontName size:self.font.pointSize];
}
@end

@implementation UIButton (IBExtensions)

- (NSString *)fontName {
    return self.titleLabel.font.fontName;
}

- (void)setFontName:(NSString *)fontName{
    self.titleLabel.font = [UIFont fontWithName:fontName size:self.titleLabel.font.pointSize];
}
@end
  1. Ustawianie czcionki w serii ujęć: Dodaj wpis w Atrybutach wykonawczych zdefiniowanych przez użytkownika z fontName jako keyPath i nazwą niestandardowej czcionki jako wartość z typem String jak pokazano.

wprowadź opis zdjęcia tutaj

Spowoduje to ustawienie niestandardowej czcionki podczas uruchamiania aplikacji.

Uwagi:

  • Lato-Regular to niestandardowa czcionka, której użyłem.
  • Tej samej nazwy w pliku .ttf dodanym w pakiecie należy używać bez rozszerzenia w serii ujęć.
  • Rozmiar czcionki będzie taki sam, jak zdefiniowany w Inspektorze atrybutów elementu interfejsu użytkownika.

Stosowanie niestandardowych czcionek do kontrolek w serii ujęć

Poniższy przykład pokazuje, jak zastosować niestandardowe czcionki do paska nawigacji i zawiera poprawki niektórych dziwnych zachowań znalezionych w Xcode. One mogą również stosować niestandardowe czcionki dla innych UIControls takich jak UILabels, UIButtons i więcej za pomocą atrybutów inspektora po niestandardowe czcionki jest dodany do projektu. Zwróć uwagę na zewnętrzne linki do działających próbek i filmów u dołu.

  1. Wybierz pasek nawigacji w kontrolerze nawigacji

pasek nawigacyjny

  1. Zmień czcionkę tytułu w Inspektorze atrybutów

czcionka tytułu

(Prawdopodobnie będziesz musiał przełączyć Odcień paska dla paska nawigacji, zanim Xcode wybierze nową czcionkę)

Uwagi (zastrzeżenia)

Zweryfikowano, że działa to na Xcode 7.1.1+. ( Zobacz próbki poniżej )

  1. Musisz zmienić odcień paska nawigacyjnego, zanim czcionka zacznie działać (wygląda na błąd w Xcode; możesz przełączyć ją z powrotem na domyślną, a czcionka się zatrzyma)
  2. Jeśli wybierzesz czcionkę systemową ~ Upewnij się, że rozmiar nie jest 0.0 (w przeciwnym razie nowa czcionka zostanie zignorowana)

rozmiar

  1. Wydaje się, że działa to bez problemu, gdy tylko jeden pasek nawigacyjny znajduje się w hierarchii widoku. Wygląda na to, że drugorzędne paski nawigacyjne na tym samym stosie są ignorowane. (Pamiętaj, że jeśli pokażesz pasek nawigacyjny głównego kontrolera nawigacyjnego, wszystkie inne niestandardowe ustawienia paska nawigacyjnego zostaną zignorowane).

Gotchas (deux)

Niektóre z nich są powtarzane, co oznacza, że prawdopodobnie warto je odnotować.

  1. Czasami xml storyboardu ulega uszkodzeniu. Wymaga to przejrzenia struktury w trybie Storyboard jako trybu kodu źródłowego (kliknij prawym przyciskiem myszy plik storyboardu> Otwórz jako ...)
  2. W niektórych przypadkach znacznik navigationItem powiązany z atrybutem środowiska wykonawczego zdefiniowanym przez użytkownika został ustawiony jako element podrzędny xml znacznika widoku zamiast znacznika kontrolera widoku. Jeśli tak, usuń go z tagów, aby zapewnić poprawne działanie.
  3. Przełącz Odcień NavBar, aby upewnić się, że używana jest niestandardowa czcionka.
  4. Sprawdź parametr rozmiaru czcionki, chyba że używasz dynamicznego stylu czcionki
  5. Hierarchia widoku zastąpi ustawienia. Wydaje się, że możliwa jest jedna czcionka na stos.

Wynik

navbar-kursywa

Próbki

Obsługa niestandardowych czcionek

Uwaga ~ Ładna lista kontrolna znajduje się na stronie Code With Chris i możesz zobaczyć przykładowy projekt pobierania.

Jeśli masz własną czcionkę i chcesz jej użyć w swojej serii ujęć, istnieje następujący zestaw odpowiedzi na następujące pytanie SO . Jedna odpowiedź określa te kroki.

  1. Otrzymasz niestandardowy plik czcionki (.ttf, .ttc)
  2. Zaimportuj pliki czcionek do projektu Xcode
  3. W app-info.plist dodaj klucz o nazwie Czcionki dostarczony przez aplikację. Jest to typ tablicy, dodaj do niej wszystkie nazwy plików czcionek, uwaga: w tym rozszerzenie pliku.
  4. W scenorysie na pasku nawigacyjnym przejdź do Inspektora atrybutów, kliknij prawy przycisk ikony w obszarze wyboru Czcionka. W panelu podręcznym wybierz Czcionka na niestandardowy i wybierz rodzinę osadzonej nazwy czcionki.

Niestandardowe obejście czcionek

Xcode wygląda więc naturalnie na to, że może obsługiwać niestandardowe czcionki w UINavigationItem, ale ta funkcja po prostu nie aktualizuje się poprawnie (wybrana czcionka jest ignorowana).

UINavigationItem

Aby obejść to:

Jednym ze sposobów jest poprawienie za pomocą scenorysu i dodanie wiersza kodu: Najpierw dodaj UIView (UIButton, UILabel lub inną podklasę UIView) do kontrolera widoku (nie elementu nawigacyjnego ... Xcode obecnie nie pozwala na to że). Po dodaniu kontrolki możesz zmodyfikować czcionkę w serii ujęć i dodać odniesienie jako ujście do kontrolera widoku. Po prostu przypisz ten widok do UINavigationItem.titleView. W razie potrzeby możesz również ustawić nazwę tekstową w kodzie. Zgłoszony błąd (23600285).

@IBOutlet var customFontTitleView: UIButton!

//Sometime later...    
self.navigationItem.titleView = customFontTitleView

Uwaga - ten przykład pochodzi z odpowiedzi, którą opublikowałem na SO ( tutaj ).



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow