W naszym projekcie używamy niestandardowych czcionek. Działa dobrze w Xcode 5. W Xcode 6 działa jako zwykły tekst, z przypisanym ciągiem w kodzie. Ale te przypisane ciągi ustawione w scenorysie powracają do Helvetica podczas pracy na symulatorze lub urządzeniu, chociaż wyglądają dobrze w scenorysie.
Nie jestem pewien, czy jest to błąd w Xcode 6 lub iOS 8 SDK, czy też sposób korzystania z niestandardowych czcionek został zmieniony w Xcode 6 / iOS 8?
Odpowiedzi:
Rozwiązaniem dla mnie było użycie
IBDesignable
klasy:Daje ci to w Interface Builder:
Możesz skonfigurować przypisany ciąg tak jak zwykle, ale będziesz musiał ponownie ustawić rozmiar czcionki i rodzinę czcionek w nowych dostępnych właściwościach.
Ponieważ Interface Builder domyślnie pracuje z czcionką niestandardową, otrzymujesz to, co widzisz , co wolę podczas tworzenia aplikacji.
Uwaga
Powodem, dla którego używam tego zamiast zwykłej wersji, jest to, że ustawiam właściwości na przypisanej etykiecie, takie jak odstępy między wierszami, które nie są dostępne, gdy używam stylu prostego.
źródło
@IBInspectable
tymczasowo używamy atrybutów zamiast czcionki i rozmiaru. MamymarkdownText
właściwość, ponieważ przez większość czasu używamy przypisanego ciągu dla tekstu pogrubionego lub podkreślonego. Następnie przeanalizuj tekst przeceny na przypisany ciąg z informacją o czcionce i rozmiarze ustawioną na zwykły tekst.Najprostszą odpowiedzią, która zadziałała, jest przeciągnięcie czcionek do FontBook. Jeśli czcionki są w Twoim projekcie, ale nie znajdują się w FontBooku Twojego komputera, IB czasami ma problemy ze znalezieniem ich. Dziwne, ale działało dla mnie kilka razy.
źródło
Możesz dodać niestandardowe czcionki do książki czcionek.
Krok 1 : Kliknij Zarządzaj czcionkami. Otwiera książkę czcionek.
Krok 2 : Kliknij plus i dodaj swoje czcionki.
Następnym razem, gdy klikniesz czcionkę z przypisanym tekstem, nowo dodana czcionka również pojawi się na liście. Ale upewnij się, że Twoja niestandardowa czcionka została dodana do info.plist i zasobów pakietu.
źródło
Dzięki temu wątkowi doszedłem do takiego rozwiązania:
źródło
Moje rozwiązanie wymaga trochę obejścia. Prawdziwym rozwiązaniem jest naprawienie przez firmę Apple programu Interface Builder.
Dzięki niemu możesz zaznaczyć cały pogrubiony i pochylony tekst w narzędziu do tworzenia interfejsu za pomocą czcionki systemowej, a następnie renderować niestandardową czcionkę w czasie wykonywania. Może nie być optymalne we wszystkich przypadkach.
Zainspirowany tym postem
źródło
Zmagałem się z tym błędem: UILabel wyświetla się poprawnie w IB z niestandardową czcionką, ale nie wyświetla się poprawnie na urządzeniu lub w symulatorze (czcionka jest zawarta w projekcie i jest używana w zwykłych etykietach UIL).
Wreszcie znalazł Attributed String Creator w (Mac) App Store. Generuje kod do umieszczenia w aplikacji w odpowiednim miejscu. Fantastyczny. Nie jestem twórcą, tylko szczęśliwym użytkownikiem.
źródło
Napotkałem ten sam problem: zestaw czcionek atrybutu dla TextView w scenorysie nie działał w czasie wykonywania z zestawem SDK XCode 6.1 i iOS 8.
Oto jak rozwiązałem ten problem, może to być dla Ciebie obejście:
otwórz inspektora atrybutów swojego widoku tekstu, zmień tekst na „Zwykły”
kliknij krzyżyk, aby usunąć „wC hR” (czerwony poniżej)
zmień tekst na „Przypisane”, a następnie możesz ustawić czcionkę i rozmiar tekstu.
źródło
wC hR
ustawionej właściwości, aniUILabel
aniUITextView
.Napotkałem ten sam problem: czcionka atrybutu dla UILabel w scenorysie nie działała w czasie wykonywania. Korzystanie z tego UIFont + IBCustomFonts.m działa dla mnie https://github.com/deni2s/IBCustomFonts
źródło
Spróbuj tego, to zadziała
W moim przypadku, gdy próbuję ustawić "Silversky Technology" jako tekst przypisany dla etykiety z kreatora interfejsu, nie jest on wyświetlany, gdy uruchamiam w symulatorze, ale jest wyświetlany w kreatorze interfejsów. Więc użyłem jednej sztuczki i stworzyłem czcionkę Silversky o 1 piksel większy niż tekst Technology.
Tekst atrybutu ma problem z tym samym rozmiarem czcionki, więc zmień rozmiar o 1 słowo , aby ze mną zadziałało.
Może to jest błąd xcode, ale ta sztuczka działa dla mnie.
źródło
Ten sam problem.
Rozwiązany: po prostu zaznacz opcję Selectable w TextView. Bez tego mam standardową czcionkę systemową.
źródło
Kliknij dwukrotnie i zainstaluj czcionkę w systemie. Będzie działać (Xcode 8.2)
źródło
Rozwiązanie @Hamidptb działa, upewnij się, że masz poprawną nazwę czcionki (po dodaniu jej do Albumu z czcionkami)
Otwórz aplikację Album z czcionkami, przejdź do czcionki, a następnie naciśnij klawisze Command + I. Nazwa PostScript to nazwa czcionki, której chcesz użyć w tym miejscu:
UILabel.appearance (). Font = UIFont (nazwa: " PostScriptName ", rozmiar: 17)
źródło
Próbowałem uzyskać komórki tableView z tekstem zawierającym wiele akapitów. Przypisane ciągi wydawały się być sposobem na uzyskanie dodatkowej przestrzeni między akapitami (coś nieco ładniejszego niż zrobienie dwóch nowych linii w ciągu). Przeszedłem przez ten i inne posty, gdy odkryłem, że ustawienia IB nie mają zastosowania w czasie wykonywania, gdy chciałeś umieścić inny tekst w komórce.
Główną rzeczą, jaką wymyśliłem, było dodanie rozszerzenia do String (przy użyciu języka Swift), aby utworzyć przypisany ciąg o określonych cechach. W przykładzie użyto czcionki Marker Felt, ponieważ można ją łatwo odróżnić od czcionki Helvetica. Przykład pokazuje również trochę dodatkowych odstępów między akapitami, aby były one bardziej różne od siebie.
Następnie w moim niestandardowym tableViewCell wysyłasz żądany tekst i konwertuje go na przypisany ciąg w UILabel.
W kontrolerze widoku z tableView powinieneś zarejestrować swoją komórkę w viewDidLoad () - użyłem stalówki, czyli coś takiego:
Aby komórka obliczyła, jaka powinna być wysoka, utwórz prototypową komórkę, która jest używana do pobierania informacji o rozmiarze i nigdy nie jest dodawana do tableView. Tak więc w zmiennych kontrolera widoku:
Następnie w (prawdopodobnie przesłonięcie - w zależności od kontrolera widoku) heightForRowAtIndexPath:
W powyższym kodzie prototypeCell zostanie wypełnione, gdy będzie to potrzebne po raz pierwszy. PrototypeCell jest następnie używany do obliczenia wysokości komórki po przejściu przez proces autodopasowania. Będziesz musiał zaokrąglić wysokość za pomocą funkcji ceil (). Dodałem też trochę dodatkowego krówki.
Ostatnim bitem kodu jest sposób konfiguracji tekstu komórki. W tym przykładzie po prostu:
Tutaj jest również ujęcie stalówki. Przypięto etykietę do krawędzi komórki (z wymaganym marginesem), ale zastosowano ograniczenie „Większe niż lub równe” z priorytetem mniejszym niż „Wymagany” dla ograniczenia dolnego.
Ustaw czcionkę etykiety na Attributed. Rzeczywista czcionka IB nie miała znaczenia.
Wynik w tym przypadku:
źródło
W przypadku przypisanego ciągu znaków można dodać niestandardową czcionkę do listy czcionek jako - Kliknij ikonę czcionki, co spowoduje wyświetlenie następującego okna dialogowego. W następnym oknie dialogowym możesz dodać własną kategorię lub istniejącą dla niestandardowej czcionki. okno dialogowe z przypisaną czcionką
Po kliknięciu Zarządzaj czcionkami otwiera się następujące okno dialogowe wyboru kategorii w utworzonej lub istniejącej. Kliknij znak +, aby dodać czcionkę do kategorii. Okno dialogowe Zarządzaj czcionkami
źródło
to ma proste i szybkie rozwiązanie i to działa w moim przypadku. tym rozwiązaniem jest dodanie linii kodu do funkcji didFinishLaunchingWithOptions w pliku AppDelegate.swift:
dla textViews :
dla etykiet :
a dla reszty UiView takie jak te dwa ☝️
źródło
Dla każdego, kto stosuje niestandardowe czcionki do przypisanego ciągu w kodzie: Spróbuj ustawić go w
viewDidLayoutSubviews
. Mój błąd polegał na tymviewDidLoad
, że nie zostanie to zastosowane.źródło