2010-08-15 11 views
5

From the Apple docs:Dlaczego Quartz 2D tekst Flip transformacji wymagane na iPhone

w iOS, należy zastosować flip przekształcić do bieżącego kontekstu graficznego, aby tekst, który będzie zorientowany jak pokazano na rysunku 16-1. [Transformacja typu flip flip] polega na odwróceniu osi Y i przetłumaczeniu punktu początkowego na dół ekranu. Listing 16-2 pokazuje, jak zastosować takie transformacje w metodzie widoku iOS. Ta metoda wywołuje wtedy tę samą metodę z listingu 16-1.

Dlaczego? Wydaje się to całkowicie whacky.

Odpowiedz

7

Po rozwinięciu w this answer, układ współrzędnych Quartz 2D wykorzystuje lewy dolny róg jako (0,0), który jest taki sam jak układ współrzędnych okna na komputerze Mac. IPhone używa górnego lewego rogu jako (0,0) dla jego układu widoku, więc warstwy, które z powrotem UIViews mają swój układ współrzędnych obrócony wokół osi Y.

Jeśli używasz rozszerzeń UIKit NSString do narysowania tekstu w warstwie podkładowej dla UIView, zostanie on poprawnie zorientowany, ponieważ jest brane pod uwagę to odbicie. Jeśli jednak korzystasz z tekstu na niższym poziomie, będziesz musiał najpierw odwrócić układ współrzędnych wokół osi Y (tak, aby 0,0 znowu było lewym dolnym), aby prawidłowo zorientować obiekt.

Zwykłe konteksty grafiki głównej (używane do rysowania obrazów lub plików PDF do przechowywania lub wyświetlania) nie są odwrócone, a więc jest odwrotnie. Normalny tekst kwarcowy będzie renderował się dobrze, ale rzeczy narysowane przy użyciu rozszerzeń NIKtring UIKit będą musiały najpierw odwrócić układ współrzędnych. Powoduje to duże zamieszanie wśród programistów, których obrazy i tekst wyglądają dobrze po narysowaniu na ekranie, ale po zapisaniu na dysku są odwrócone do góry nogami.

Jeśli chodzi o to, dlaczego tak się stało, nikt nie zgaduje. Oba układy współrzędnych mają swoje zalety w pewnych okolicznościach. Łatwo jest jednak to poprawić.

+0

dobra odpowiedź brad .... +1 :) –

Powiązane problemy