Xcode 6 ma nową funkcję, w której czcionki i rozmiary czcionek są w UILabel
, UITextField
i UIButton
mogą być ustawiane automatycznie na podstawie klasy rozmiaru bieżącej konfiguracji urządzenia, bezpośrednio w serii ujęć. Na przykład możesz ustawić UILabel
czcionkę w rozmiarze 12 w konfiguracjach o dowolnej szerokości i niewielkiej wysokości (np. Na iPhone'ach w orientacji poziomej), a rozmiar 18 na konfiguracjach o zwykłej szerokości i wysokości (np. Na iPadach ). Więcej informacji można znaleźć tutaj:
developer.apple.com/size_class
W teorii jest to świetna funkcja, ponieważ może sprawić, że nie będzie konieczne programowe ustawianie różnych czcionek w funkcjach interfejsu użytkownika na podstawie konfiguracji urządzenia. W tej chwili mam kod warunkowy, który ustawia czcionki na podstawie typu urządzenia, ale oczywiście oznacza to, że muszę ustawić czcionki programowo w całej aplikacji. Więc początkowo byłem bardzo podekscytowany tą funkcją, ale odkryłem, że ma ona poważny problem z rzeczywistym użyciem (być może błąd). Zwróć uwagę, że tworzę w oparciu o SDK 8 i ustawiam minimalny cel wdrożenia iOS 8 , więc nie ma to nic wspólnego ze zgodnością ze starymi wersjami iOS.
Problem jest następujący: jeśli ustawię różne rozmiary czcionek dla różnych klas wielkości i użyję czcionki „systemowej” dostarczonej przez iOS , wszystko działa zgodnie z oczekiwaniami, a rozmiary czcionek zmieniają się w zależności od klasy rozmiaru. Jeśli używam niestandardowej czcionki dostarczonej przez moją aplikację (tak, mam ją poprawnie skonfigurowaną w moim pakiecie aplikacji, ponieważ działa programowo) i ustawię niestandardową czcionkę na etykiecie w scenorysie XCode 6 , która również działa zgodnie z oczekiwaniami. Ale kiedy próbuję użyć różnych rozmiarów niestandardowej czcionki dla różnych klas rozmiarów, w scenorysie nagle nie działa. Jedyną różnicą w konfiguracji jest wybrana przeze mnie czcionka (niestandardowa w porównaniu z czcionką systemową). Zamiast tego wszystkie czcionki pojawiają się w plikuurządzenie i symulator jako domyślna czcionka systemowa w domyślnym rozmiarze , niezależnie od klasy rozmiaru (i sprawdziłem za pomocą debugera, że zastępuje czcionkę systemową rzeczywistą określoną w scenorysie). Zasadniczo funkcja klasy rozmiaru wydaje się być zepsuta dla niestandardowych czcionek. Co ciekawe, niestandardowe czcionki faktycznie wyświetlają się i odpowiednio dostosowują rozmiar w okienku „Podgląd” XCode 6 dla kontrolera widoku: przestaje działać tylko wtedy, gdy działa na rzeczywistym systemie iOS (co sprawia, że myślę, że konfiguruję go poprawnie) .
Wypróbowałem wiele różnych czcionek niestandardowych i wydaje się, że nie działa dla żadnej z nich, ale zawsze działa, jeśli zamiast tego używam „System”.
W każdym razie, czy ktoś inny widział ten problem w Xcode 6 ?
Wszelkie pomysły, czy to błąd w iOS 8, Xcode, czy coś
Robię źle?
Jedynym rozwiązaniem, jakie znalazłem, jak powiedziałem, jest dalsze programowe ustawianie czcionek, tak jak w przypadku około trzech wersji iOS, ponieważ to działa.
Ale chciałbym móc korzystać z tej funkcji, gdybym mógł zmusić ją do pracy z niestandardowymi czcionkami. Korzystanie z czcionki systemowej jest niedopuszczalne w naszym projekcie.
DODATKOWE INFORMACJE: Od Xcode 8.0 błąd został naprawiony.