2010-08-15 7 views
5

From the Apple docs:¿Por qué es la transformada requerido Quartz 2D flip texto en el iPhone

En iOS, debe aplicar un flip transformar al contexto gráfico actual con el fin de que el texto estará orientado como se muestra en la Figura 16-1. [Una transformación invertida] implica invertir el eje y y traducir el punto de origen a la parte inferior de la pantalla. El listado 16-2 muestra cómo aplicar dichas transformaciones en el método drawRect: de una vista de iOS. Este método llama al mismo método MyDrawText del Listado 16-1.

¿Por qué? Esto parece totalmente loco.

Respuesta

7

Al expandirme en this answer, el sistema de coordenadas 2D de Quartz usa la esquina inferior izquierda como (0,0), que es lo mismo que el sistema de coordenadas de la ventana en la Mac. El iPhone usa la esquina superior izquierda como (0,0) para su diseño de vista, por lo que las capas que respaldan a UIViews tienen su sistema de coordenadas volteado alrededor del eje Y.

Si utiliza las extensiones de NSString UIKit para dibujar texto en la capa de respaldo de un UIView, se orientará correctamente porque se considera este volteo. Sin embargo, si usa el dibujo de texto de cuarzo de nivel inferior, primero deberá voltear el sistema de coordenadas sobre el eje Y (de modo que 0,0 sea una vez más el ángulo inferior izquierdo) para orientar las cosas correctamente.

Normal Core Los contextos de gráficos (utilizados para dibujar imágenes o archivos PDF para su almacenamiento o visualización) no se invierten, por lo que ocurre lo contrario. El texto de Cuarzo normal se procesará bien, pero los elementos dibujados con las extensiones NSString UIKit necesitarán tener el sistema de coordenadas invertido primero. Esto causa mucha confusión entre los desarrolladores cuyas imágenes y texto se ven bien cuando se dibujan en la pantalla, pero terminan al revés cuando se guardan en el disco.

En cuanto a por qué se hizo esto, es una incógnita. Ambos sistemas de coordenadas tienen sus ventajas en ciertas circunstancias. Sin embargo, es algo fácil de corregir.

+0

nice answer brad .... +1 :) –

Cuestiones relacionadas