2011-02-23 15 views
12

Sé que hubo algunas discusiones sobre esto, pero no pude encontrar una buena respuesta?Utilice @ 2x imágenes retina para ipad en la aplicación universal? y Apple prefiere las aplicaciones nativas?

Mis preguntas son -

  1. sé que -

    [UIImage imageNamed:@"blabla"] 
    

buscará automáticamente la imagen correcta para mostrar (retina o no) en el iPhone.

Tengo una aplicación universal, y deseo usar las versiones @ 2x en el ipad para que no tenga que cargar otra versión de las imágenes (tengo cientos de imágenes pequeñas).

¿es posible?

  • Vi en algunos lugares que las personas escribían que Apple desalentaba las aplicaciones universales ya que prefiere construir aplicaciones separadas para iPhone y iPad? ¿Es correcto incluso cuando creo una interfaz de usuario diferente para cada uno?

gracias

Shani

+0

¿Por qué Apple prefiere distinta IPAD y el iPhone aplicaciones? Como usuario, las aplicaciones universales me resultan mucho más atractivas. –

+0

es por eso que pensé cuando decidí ir a la aplicación universal, pero lo vi en algunos lugares y solo quiero estar seguro – shannoga

Respuesta

17

no hay una buena forma integrada de de no duplicar las imágenes de mayor resolución de la retina del iphone para el iPad. Se puede escribir su propia extensión UIImage o subclase que utiliza la macro interfaz de usuario modismo para determinar su plataforma, tiene que poner de forma automática "@ 2x" al nombre de la imagen:

+ (UIImage *) imageNamedSmart:(NSString *)name 
{ 
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
     return [UIImage imageNamed:[NSString stringWithFormat:@"%@@2x.png", name]]; 
    return [UIImage imageNamed:[NSString stringWithFormat:@"%@.png", name]]; 
} 

y que se dice así:

[UIImage imageNamedSmart:@"myImage"] 
+0

Oye, ya lo probé, pero no funcionó. – shannoga

+0

qué parte no funcionó? – Bogatyr

+0

Hola mi error. la verdad es que ese fue mi primer intento. pero fui lo suficientemente estúpido como para intentarlo con la idea de que todavía no tengo las imágenes @ 2x. gracias de cualquier manera :) – shannoga

0

Quizás pueda duplicar todos los recursos de imágenes [email protected] a la imagen ~ ipad.png. Tenga cuidado con el caso de "~ ipad.png". Pero tiene que administrar manualmente la imagen estirada con Cap (stretchableImageWithLeftCapWidth: topCapHeight :).

3

He mejorado la respuesta de Bogatyr comprobando si existe la imagen de la retina. Probablemente no sea demasiado necesario, pero lo encontré útil cuando realicé la prueba, así que solo puedo crear un archivo de imagen.

+ (UIImage *) imageNamedSmart:(NSString *)name { 
    NSFileManager *fileManager = [[[NSFileManager alloc] init] autorelease]; 
    NSString *retinaFileName = [NSString stringWithFormat:@"%@@2x", name]; 

    NSString *filePath = [[NSBundle mainBundle] pathForResource:retinaFileName ofType:@"png"]; 

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad && [fileManager fileExistsAtPath:filePath]) { 
     return [UIImage imageNamed:[retinaFileName stringByAppendingString:@".png"]]; 
    } 
    return [UIImage imageNamed:[NSString stringWithFormat:@"%@.png", name]]; 
} 
67

Si va a cargar una imagen llamada "imagen" de las rutas de búsqueda es probable que sean los mismos que siempre han sido:

iPhone:

  • imagen
      1) @ iphone.png 2x ~ (sólo retina)
    • 2) [email protected] (retina solamente)
    • imagen
    • 3) ~ iphone.png
    • 4) image.png

    iPad:

    • 1) imagen @ 2x ~ ipad.png (retina solamente)
    • 2) [email protected] (sólo
    • 3) Imagen ~ ipad.png
    • 4) image.png retina)
  • +0

    Si esto funciona, esta debería ser la respuesta seleccionada. Esto es asombroso Por supuesto, es posible que desee tener en cuenta que esto solo funciona en 4.0+. http://stackoverflow.com/a/5535913/362730 – Tim

    +0

    Además, esto significa que si tiene un tamaño de iPhone regular, tamaño de iPhone de Retina y gráficos regulares de iPad, un iPad con retina preferiría cargar gráficos de Retina iPhone antes de gráficos regulares de iPad. ? – Tim

    +0

    cuál es la diferencia entre en iPhone: 1) [email protected]~iphone.png (solo retina) 2) [email protected] (solo retina) – hariszaman

    Cuestiones relacionadas