2011-11-08 16 views
7

Zawsze uważałem, że było wspaniale, że mogłem użyć prostych ikonicznych znaków Unicode w sznurku, gdy potrzebowałem strzały, kuli lub czegoś podobnego. Glify renderowałyby w tym samym kolorze co reszta struny z ładnymi prostymi i czystymi ikonami. Mogłem podejrzeć, jak wyglądałyby, używając okna "Specjalne znaki" Maca w menu Edycja w XCode.Fantazyjne ikony iOS5 (emoji?) Dla specjalnych znaków unicode - nie to, co chcę

W iOS5 te glify renderują się w pełnym kolorze i nie są proste i czyste. Uważam, że są to ikony Emoji?

Szukam wyjaśnienia tej zmiany, a najlepiej, jak zmusić iOS5 do przywrócenia zachowania iOS2 iOS4.

Oto przykład: @"← left arrow, right arrow → airplane ✈";

Edit:

Najwyraźniej rozszerzenia NSString UIKit dla renderowania tekstu (drawAtPoint:/drawInRect:) nie wykazują takiego zachowania. Więc może to jest sprawa UILabel? W szczególności zauważyłem to wewnątrz przycisku segmentu UISegmentControl oraz w UILabel.

+0

Polecam zgłoszenie błędu. Istnieje wiele okazji, w których postać Unicode powinna być dostępna pod kontrolą aplikacji. –

Odpowiedz

1

To nie jest błąd, to zależy od użytej czcionki. Gdy używasz znaku w ciągu, który nie jest dostępny w wybranej czcionce, system iOS automatycznie zastępuje glif z innej czcionki.

Czcionka systemowa (Helvetica) nie zawiera w sobie tych znaków, więc domyślam się, że Apple zmieniło listę czcionek zastępczych, dzięki czemu wskaźnik Emoji przewyższa to, co poprzednio używano do zastępowania tych znaków. .

Aby to naprawić, znajdź czcionkę, która a) ma żądaną wersję znaków, a b) jest dostępna na telefonie iPhone i ustaw etykietę tak, aby korzystała z niej zamiast domyślnej czcionki systemowej.

Alternatywnie można utworzyć podklasę UILabel i zastąpić metodę drawRect, aby korzystać z metod drawAtPoint/drawInRect w celu narysowania łańcucha.

+0

Nie myślałem, że to błąd. To zdecydowanie zmiana zachowania, aby użyć innej "awaryjnej" czcionki. Używam Hiragino Kaku Gothic ProN W6 15.0, ponieważ wydaje się, że ma wszystkie "stare" symbole. Ale jest to naprawdę dopuszczalne tylko wtedy, gdy nie muszę mieszać tekstu i symboli. – TomSwift

+0

Niestandardowa UILabel wydaje się najłatwiejszą opcją. Jeśli nie masz ochoty na własne, możesz wypróbować mój FXLabel (https://github.com/nicklockwood/FXLabel), który wykorzystuje podstawowe metody rysowania ciągów graficznych, więc prawdopodobnie nie będzie miał tego problemu. –

+0

To ładnie wygląda, dzięki. Nie pomaga to jednak w przypadku przycisków ani innych elementów sterujących :( – TomSwift

Powiązane problemy