2012-02-03 14 views
5

Wiem, że istnieje wiele wątków podobnych do tego, ale przeczytałem je wszystkie (o ile wiem) i nie widziałem tego samego problemu, który mam.Wymuś tekst w celu dopasowania do UILabel w pionie?

Próbuję wyświetlić cały tekst w etykiecie PIONOWEJ.

Pozwól mi wyjaśnić - Czcionki nie zawsze są tworzone w ten sam sposób, więc podczas gdy ich całkowita wysokość może być taka sama (na przykład 24pt). Jednak Ascender i Descender różnią się znacznie - jedna czcionka może być w większości powyżej linii podstawowej, podczas gdy inna jest w większości poniżej. Dlatego ten sam tekst z różnymi czcionkami może nie zawsze być wyświetlany w tym samym widoku/etykiecie.

Na przykład zobacz zrzuty ekranu poniżej.

Pierwszą z nich jest Helvetica-Bold 300pts. Drugi to Apple Gothic 300pts.

Zauważ, że dolna część "g" jest obcięta za pomocą Helvetica (i wielu innych czcionek - spróbuj, zobaczysz).

Helvetica-Bold300

AppleGothic

Więc mój problem jest taki: Chciałbym być w stanie zobaczyć cały tekst, niezależnie od czcionki. Jeśli tekst w przykładzie "Helvetica" mógłby zostać przeniesiony (i wyśrodkowany) na etykiecie, rozwiąże mój problem. Aby było to łatwiejsze, wystarczy wyświetlić tylko jedną linię.

Niestety, żadne z rozwiązań, które widziałem, nie dotyczyło wznoszących się i wznoszących czcionek i nie pozwalało na narysowanie tekstu wewnątrz Recta. Zwróć uwagę, że rozwiązania "VerticalAlignment" w różnych wątkach nie rozwiązują tego konkretnego problemu.

Czy ktoś ma jakieś pomysły lub rozwiązania?

Odpowiedz

2

Najprostszy sposób to zastosowanie podklasy UILabel i użycie metody NSString - (CGSize)sizeWithFont:(UIFont *)font forWidth:(CGFloat)width lineBreakMode:(UILineBreakMode)lineBreakMode znanej z NSString UIKit additions.

Możesz zastąpić - (void)setFont w swojej sublacie, sprawdź, czy rozmiar czcionki będzie działał w prostokącie widoku, a jeśli jest zbyt duży, zmniejsz go, aż będzie pasował.

+0

Dzięki, ale opublikowane przeze mnie obrazy są już wynikiem podklasy za pomocą VerticalAlignment i 'sizetofit'. Rozmiar czcionki nie jest problemem - jak widać, jest wystarczająco dużo miejsca na tekst - po prostu nie jest wyrównany poprawnie. – wayneh

+0

OK, ale spójrz na metodę sizeWithFont, która da ci wysokość napisu, a jeśli wiesz, możesz wyśrodkować ją samodzielnie, a następnie narysować ciąg za pomocą drawStringAtPoint. Po prostu przeczytaj link - daje ci wszystko, czego potrzebujesz, aby to osiągnąć. – sosborn

+0

OK, sprawdzę to i zobaczę, co mogę zrobić. – wayneh

Powiązane problemy