2010-10-28 17 views
14

Nella mia applicazione ho bisogno di ottenere l'immagine corretta in base al dispositivo iPad/iPhone 4/iPhone 3.Convenzione di denominazione delle immagini per iPad/iPhone universale?

Ad esempio:

Ho un'immagine denominata a.png (larghezza 40, altezza 20) per iPhone 3/iPod, e [email protected] (larghezza 80, altezza 40) per iPhone 4.

Se ho citato il codice

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

myImage contiene immagini (80 * 40) se si tratta di iPhone 4. myImage contiene immagini (40 * 20) se si tratta di iPod/iPhone 3.

La mia domanda è come ottengo l'immagine per iPad (60 * 30) come sopra la convenzione di denominazione.

Ho provato a dare a~ipad.png come nome di immagine e non funziona. Puoi indicare dove c'è un errore?

E se utilizzo la condizione utilizzando [UIDevice currentDevice]; isIpod -> carica (60 * 30) immagine altrimenti carica le immagini per iPhone/iPod funziona correttamente.

Ma ho bisogno di farlo funzionare senza utilizzare la condizione e utilizzando la convenzione di denominazione come a.png per iPhone/iPod, [email protected] per iPhone 4 e anche per iPad.

Grazie in anticipo.

risposta

8

Non esiste alcuna convenzione di denominazione immagine per iPad, è solo per i display retina in modo che le immagini appaiano nitide. Se si desidera supportare iPad, è necessario creare un layout separato per esso (separatore xib), anche un set separato di immagini nella maggior parte dei casi, perché è stato assegnato un layout più grande.

È tuttavia possibile creare una convenzione di denominazione per se stessi e passare il nome della stringa a una funzione statica che convertirà il nome in un iPad/iphone in base al dispositivo.

E.g.

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

e all'interno della funzione getImageName, si può fare la vostra conversione (utilizzare lo stesso nome, se iphone, altro rinomina a qualcos'altro)

0

Sto usando un "Resource Manager" che ho sviluppato prima di creare qualsiasi applicazione. Questo Resource Manager può decidere sulla convenzione di denominazione dopo aver caricato i file di configurazione della risorsa (principalmente XML). In questo modo tutto è trasparente al programmatore della GUI, avete solo bisogno di preoccuparsi per la creazione del contenuto :)

18

Secondo questo documento di Apple, c'è un'immagine convenzione di denominazione per i dispositivi:

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

Si dice di utilizzare "~ iphone" per iPhone e nessun suffisso per iPad. Anche se mi è stato detto aneddoticamente che "~ ipad" funziona anche.

+0

Il collegamento aggiornato alla [documentazione di Apple] (https: // developer. apple.com/library/ios/documentation/iphone/conceptual/iphoneosprogrammingguide/App-RelatedResources/App-RelatedResources.html#//apple_ref/doc/uid/TP40007072-CH6-SW18) per la convenzione di denominazione delle risorse specifica del dispositivo. – Amar

+0

qualcuno può confermare se ~ ipad funziona sicuramente? –

7

seguito al post di Nate, la documentazione specifica da parte di Apple che descrive la convenzione di denominazione può essere trovato alla:

Supporting High-Resolution Screens - Updating Your Image Resource Files

Secondo il collegamento, il modello di convenzione di denominazione è il seguente:

  • Standard: <ImageName><device_modifier>.<filename_extension>
  • Alta risoluzione: <ImageName>@2x<device_modifier>.<filename_extension>

Ad esempio: "[email protected]~ipad.png" per un'immagine specifica per iPad ad alta risoluzione o "MyImage ~ iphone.png" per un'immagine specifica per iPhone standard.

Problemi correlati