2012-06-10 10 views
7

Ya casi termino con la versión para iPhone de mi aplicación cuando me di cuenta de que voy a tener que (¿probablemente?) Escribir condicionales para cada elemento de UI porque usan diferentes gráficos. Esto hará que mi código sea muy complicado. Tengo 15 diferentes controles de interfaz de usuario personalizados y no puedo imaginar que la configuración de un condicional ("si ipad load image_ipad, si iphone carga image_iphone") para cada método es la mejor manera de hacerlo. ¿Alguien puede sugerir una técnica particular para lidiar con esto? ¿O hay alguna forma de nombrar imágenes como puedes entre retina y regular?Cómo minimizar el código cuando se usan diferentes imágenes para iPad y iPhone?

+0

¿por qué no utilizar controles estándar que escalan automáticamente entre iPhone y iPad en lugar de crear controles personalizados? – melsam

+0

Toda mi interfaz de usuario es gráficos personalizados. Controles UIKit, mis propias imágenes. – frankie

+0

¿Por qué tienen diferentes tamaños en el iPad? Casi todos los controles UIKit tienen el mismo tamaño en ambos dispositivos. Solo la barra de navegación cambia su altura. – calimarkus

Respuesta

7

Necesitará simplemente pasar el nombre de la imagen básica ... digamos que nuestro nombre de imagen es "Apple.png" ,, luego escribirá el nombre de la imagen get como este UIImage *image = [UIImage ImageNamed:@"Apple.png"] y el nombre de la imagen para los siguientes casos será:

1. iPad> put ~ ipad, nombre de la imagen será "Apple~ipad.png"

2. iPhone> put ~ iPhone, nombre de la imagen habrá "Apple~iphone.png"

3.for Retina Display> poner @ 2x, el nombre de la imagen será "[email protected]"

4.si tiene diffrenet imagen para retina diplay para iPad y iPhone que será como esta ,, para iPad "[email protected]~ipad.png" ,, para iPhone "[email protected]~iphone.png"

Si lo que sea como esto iOS detectará el mejor partido de nombre de la imagen y cargarla.

+1

parece legítima respuesta –

+0

Gracias. Esa es una respuesta muy útil. – frankie

2

Si desea tener versiones para retina y no retina, solo tiene que guardar dos versiones de su activo en su paquete. Si su activo se llama button.png, usted guarda:

-button.png para la versión no retina. [email protected] para la versión de pantalla Retina.

Su código:

UIImage * myImage = [UIImage imageNamed:@"button.png"]; 

el sistema comprobará automáticamente para el @ 2x.png retina o si va a recoger el otro para no retina

Puede colocar myImage en su interfaz de usuario personalizada, y el sistema operativo hace el resto para usted ;-)

Cuestiones relacionadas