2011-04-04 13 views
15

He actualizado mi objetivo actual a iPad y he hecho una aplicación universal y el tiempo para ajustar mi aplicación de iPhone a ipad disminuiría significativamente si hubiera una respuesta para esta pregunta.Especifique imágenes para iPad en Xcode como @ 2x para iPhone 4

Por este tiempo todo el mundo sabe que si usted tiene una imagen llamada "football.png" y desea soporte para Retina Display que debe duplicar el tamaño de la imagen y lo llaman "[email protected]".

Mi pregunta es si hay algo para iPad como *[email protected]_which_is_another_size.png*?

Si no hay una manera de hacerlo, ¿tengo que conectar cada imagen a una IBOutlet y configurar el marco programáticamente?

Respuesta

27

En iOS 4.0 y versiones posteriores, es posible para marcar los archivos de recursos individuales como utilizable sólo en un tipo específico de dispositivo Para asociar un archivo de recursos con un dispositivo particular , agrega una cadena modificadora personalizada a su nombre de archivo. El inclusión de esta cadena modificador da nombres de archivo con el formato de siguiente:

<basename><device>.<filename_extension> 

Para cargar los recursos específicos que debe utilizar protectores y ~ipad. Ejemplo: cree la imagen llamada AwesomeImage~ipad.png y cargue con [UIImage imageNamed:@"AwesomeImage.png"] como lo hace para retina mostrar la imagen. Para obtener más información: http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/LoadingResources/Introduction/Introduction.html En la sección "iOS admite recursos específicos del dispositivo".

+0

Una gran respuesta, aunque el objetivo de implementación se establece en 3.0, por lo que no puedo usar esta solución. –

+0

no funciona para IB y LaunchScreen.xib – BergP

+0

¿Hay un para AppleTV (tvOS)? No pude encontrar ninguna pista sobre eso ... – Scorpio

2

No creo que haya una manera de conseguir que el sistema operativo lo elija automáticamente, como lo hay para la pantalla Retina. Sin embargo, se podría crear un método de conveniencia para volver a los nombres de archivo para usted como:

-(NSString*) myImageFilename:(NSString*)baseName withExtension:(NSString*)ext { 

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
    return [NSString stringWithFormat:"%@@iPadSize.%@"]; 
} else { 
    return [NSString stringWithFormat:"%@.%@"]; 
} 

} 
+0

Gracias por la respuesta, esta solución alternativa significa que tengo que conectar cada imagen a una IBOutlet en mi archivo de encabezado. Estoy, como comenté en la respuesta de Eimanas, creando una aplicación universal que solo crea un MainWindow-iPad.xib. Pero considero utilizar la otra alternativa al actualizar el objetivo actual al iPad. ¿Eso suena como la solución más adecuada? –

Cuestiones relacionadas