2011-11-10 10 views
6

Następujące zjawisko: mój tekst to "Wyszukaj". Tworzę UILabel SmallSystemFontSize i wywołuję sizeToFit:.Dlaczego tekst UILabel jest rozmazany na iPadzie, jeśli szerokość nie jest równa?

Rezultat ma 39 jednostek szerokości, a tekst wygląda na zamglony. Jeśli ustawię szerokość na 40, wygląda idealnie.

Przeczytałem, że tekst staje się niewyraźny, jeśli trafisz w piksele, co oznacza, że ​​szerokość będzie wynosić około 39,5, ale wydaje się, że musi być równy.

Czy ktoś może potwierdzić, a nawet wyjaśnić, co się dzieje?

Odpowiedz

4

UIView elementy są umieszczane przez ich środek, który dla rozmiaru, który jest nieparzysty, jest na połowie piksela, 19.5 dla szerokości 39. To wyrównanie powoduje uśrednianie pikseli, które powoduje rozmycie.

Jednym ze sposobów jest wyrównanie szerokości.

Innym sposobem jest umieszczenie go w środku, jeszcze stosowania punkcie:

@property(nonatomic) CGPoint center 

przykład do pożądanego położenia label; AT (10, 10, 39, 19) można było użyć:

label.center = CGPointMake(50, 20); 
+0

Powiedz mi, czy mój przedmiot ma 39 szerokości i ustawiam go, ustawiając ramkę na (10, 10, 39, 19), ale jest rozmyta, chociaż zaczyna się od lewego górnego rogu (10, 10)? To dziwne. Jaki jest najlepszy/najprostszy sposób, aby to naprawić? – Krumelur

+0

To również była dla mnie niespodzianka, patrz dodatek do mojej odpowiedzi. – zaph

+0

Cały efekt wygląda jak błąd w strukturze interfejsu użytkownika. Nie widzę w tym żadnego sensu ... – Krumelur

3

W moim przypadku, po ustawieniu shouldRasterize = YES na CGLayer z superview UILabel był winowajcą. Usunięcie tej linii sprawiło, że tekst był miły i wyraźny.

+3

'layer.shouldRasterize = YES;' tylko sprawi, że rzeczy będą wyglądały na zamglone, jeśli nie ustawisz 'rasteryzacjiScale' na skali ekranu, ponieważ domyślnie jest to 1.0, niezależnie od tego, czy jesteś na wyświetlaczu siatkówki, czy nie. Możesz to naprawić, wykonując 'layer.rasterizationScale = [[UIScreen mainScreen] scale];' – matehat

+0

@matehat Dziękujemy! –

Powiązane problemy