2012-04-09 17 views
5

Acabo de notar algo interesante al intentar actualizar mi aplicación para la nueva pantalla Retina de iPad, cada coordenada en Interface Builder sigue basándose en la resolución original de 1024x768.Coordenadas de XCode para iPad Retina Displays

Lo que quiero decir con esto es que si tengo una imagen de 2048x1536 para que se ajuste a toda la pantalla en la pantalla, debo configurar su tamaño a 1024x768 y no a 2048x1536.

Solo tengo curiosidad ¿es esto intencional? ¿Puedo cambiar el sistema de coordenadas en el Interface Builder para que sea específico para Retina? Es un poco molesto ya que algunos de mis gráficos no son exactamente 2x en ancho o alto de sus originales. Parece que no puedo configurar 1/2 números de coordenadas, como 1.5, puede ser 1 o 2 dentro de Interface Builder.

¿Debo hacer solo el diseño de mi interfaz en el código en este punto y olvidar el constructor de interfaz? Mantenga mis gráficos exactamente 2 veces en ambas direcciones? ¿O solo vivir con eso?

Respuesta

4

La interfaz en iOS se basa en puntos, no en píxeles. Las imágenes TIENEN que ser 2 veces el tamaño de los originales.

Puntos Versus píxeles en iOS hay una distinción entre las coordenadas especificadas en el código de dibujo y los píxeles del dispositivo subyacente . Al utilizar tecnologías de dibujo nativas como Quartz, UIKit y Core Animation, especifique valores de coordenadas utilizando un espacio de coordenadas lógico, que mide las distancias en puntos. Este sistema de coordenadas lógicas está desacoplado del espacio de coordenadas del dispositivo utilizado por los marcos del sistema para administrar los píxeles en la pantalla . El sistema asigna automáticamente puntos en el espacio de coordenadas de coordenadas a píxeles en el espacio de coordenadas del dispositivo, pero esta asignación es no siempre uno a uno. Este comportamiento conduce a un hecho importante que usted debe recordar siempre:

Un punto no necesariamente corresponde a un píxel en la pantalla. El propósito de usar puntos (y el sistema de coordenadas lógicas) es para proporcionar un tamaño constante de salida que sea independiente del dispositivo. El tamaño real de un punto es irrelevante. El objetivo de los puntos es proporcionar una escala relativamente uniforme que puede usar en su código para especificar el tamaño y la posición de las vistas y el contenido presentado. La forma en que los puntos están realmente mapeados en píxeles es un detalle manejado por los marcos del sistema . Por ejemplo, en un dispositivo con una pantalla de alta resolución, una línea que tiene un punto de ancho puede dar como resultado una línea con dos píxeles de ancho en la pantalla. El resultado es que si dibuja el mismo contenido en dos dispositivos similares, y solo uno de ellos tiene una pantalla de alta resolución , el contenido parece tener aproximadamente el mismo tamaño en ambos dispositivos.

En su propio código de dibujo, utiliza puntos la mayor parte del tiempo, pero hay en los que es posible que necesite saber cómo se asignan los puntos a los píxeles. Por ejemplo, en una pantalla de alta resolución, es posible que desee utilizar píxeles adicionales para proporcionar detalles adicionales en su contenido, o puede simplemente desea ajustar la posición o el tamaño del contenido de manera sutil. En iOS 4 y posterior, las clases UIScreen, UIView, UIImage y CALayer exponen un factor de escala que le indica la relación entre los puntos y los píxeles de ese objeto en particular. Antes de iOS 4, se suponía que este factor de escala era 1.0, pero en iOS 4 y posterior puede ser 1.0 o 2.0, dependiendo de la resolución del dispositivo subyacente. En el futuro, otros factores de escala también pueden ser posibles.

De http://developer.apple.com/library/ios/#documentation/2DDrawing/Conceptual/DrawingPrintingiOS/GraphicsDrawingOverview/GraphicsDrawingOverview.html

1

esto es intencional por parte de Apple, para que su código relativamente independiente de la resolución real de la pantalla al colocar controles y texto. Sin embargo, como habrás notado, puede hacer que la visualización de gráficos a una resolución máxima para el dispositivo sea un poco más complicada.

Para iPhone, la pantalla siempre tiene 480 x 320 puntos. Para iPad, es 1024 x 768. Si sus gráficos están escalados correctamente para el dispositivo, el impacto no es difícil de manejar en el código. No soy diseñador gráfico, y para mí fue un poco difícil tener que proporcionar múltiples conjuntos de íconos, imágenes de lanzamiento, etc. para rendir cuentas de alta resolución.

normas

Apple ha nomenclatura para algunos tipos de imágenes que reduzcan al mínimo el impacto en su código:

https://developer.apple.com/library/ios/#DOCUMENTATION/UserExperience/Conceptual/MobileHIG/IconsImages/IconsImages.html

eso no te ayuda cuando estás tratando con gráficos personalizados en línea, sin embargo.

Cuestiones relacionadas