2010-10-28 18 views
14

En mi aplicación necesito obtener la imagen correcta en función del dispositivo iPad/iPhone 4/iPhone 3 del dispositivo.¿Convención de nomenclatura universal para iPad/iPhone de la aplicación universal?

Por ejemplo:

He una imagen llamada a.png (anchura 40, altura 20) para iPhone 3/iPod, y [email protected] (anchura 80, altura 40) para el iPhone 4.

Si I mencionado el código

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

myImage contiene la imagen (80 * 40) si se trata de iPhone 4. myImage contiene la imagen (40 * 20) si se trata de iPod/iPhone 3.

Mi pregunta es ¿cómo obtengo la imagen para iPad (60 * 30) como la convención de nomenclatura anterior?

Intenté dar a~ipad.png como nombre de una imagen y no está funcionando. ¿Puedes señalar dónde hay un error?

Y si uso la condición usando [UIDevice currentDevice]; isIpod -> carga (60 * 30) imagen de lo contrario cargar imágenes para iPhone/iPod funciona bien.

pero tengo que conseguir que funcione sin necesidad de utilizar la condición, y utilizando la convención de nombres como a.png para iPhone/iPod, [email protected] para el iPhone 4 y lo mismo para el iPad.

Gracias de antemano.

Respuesta

8

No existe una convención de nomenclatura de imágenes para iPad, solo está disponible para pantallas Retina, de modo que sus imágenes aparezcan nítidas. Si desea admitir iPad, entonces necesita crear un diseño separado para él (xib por separado), incluso un conjunto separado de imágenes en la mayoría de los casos porque se le dio un diseño más grande.

Puede, sin embargo, crear una convención de nomenclatura para usted y pasar el nombre de la cadena a una función estática que convertirá el nombre en un iPad/iphone según el dispositivo.

E.g.

[UIImage imageNamed: [MyAppUtils getImageName:@"a.png"]]; 

y dentro de la función getImageName, se puede hacer la conversión (utilizar el mismo nombre si iphone, de lo contrario cambiar el nombre a otra cosa)

0

estoy usando un "Resource Manager" que he desarrollado primero antes de crear cualquier aplicación Este Resource Manager puede decidir sobre la convención de nomenclatura después de cargar los archivos de configuración de recursos (principalmente XML). De esta manera todo es transparente para el programador de la interfaz gráfica de usuario, sólo tiene que preocuparse de la creación del contenido :)

18

De acuerdo con este documento de Apple, hay una imagen de convenciones de nomenclatura para los dispositivos:

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/LoadingResources/ImageSoundResources/ImageSoundResources.html#//apple_ref/doc/uid/10000051i-CH7-SW17

Dice usar "~ iphone" para iPhone, y no tiene sufijo para iPad. Aunque anecdóticamente me han dicho que "~ ipad" también funciona.

+0

La relación actualizada de la documentación de Apple [] (https: // desarrolladores. apple.com/library/ios/documentation/iphone/conceptual/iphoneosprogrammingguide/App-RelatedResources/App-RelatedResources.html#//apple_ref/doc/uid/TP40007072-CH6-SW18) para la convención de nomenclatura de recursos específicos del dispositivo. – Amar

+0

alguien puede confirmar si ~ ipad definitivamente funciona? –

7

Además al mensaje de Nate, la documentación específica de Apple describir la convención de nomenclatura se puede encontrar en:

Supporting High-Resolution Screens - Updating Your Image Resource Files

De acuerdo con el enlace, el patrón de convención de nomenclatura es la siguiente:

  • estándar: <ImageName><device_modifier>.<filename_extension>
  • de alta resolución: <ImageName>@2x<device_modifier>.<filename_extension>

Por ejemplo: "[email protected]~ipad.png" para una imagen específica del iPad de alta resolución o "MyImage ~ iphone.png" para una imagen específica del iPhone con resolución estándar.

Cuestiones relacionadas