2012-06-10 5 views
7

Ho quasi finito con la versione per iPhone della mia app quando ho capito che dovrò (probabilmente?) Scrivere condizionali per ogni elemento dell'interfaccia utente perché usano una grafica diversa. Questo renderà il mio codice molto disordinato. Ho 15 diversi controlli personalizzati dell'interfaccia utente e non riesco a immaginare che impostare un condizionale ("se ipad carica image_ipad, se iphone carica image_iphone") per ogni metodo sia il modo migliore per farlo. Qualcuno può suggerire una tecnica particolare per affrontare questo? O c'è un modo per nominare le immagini come è possibile tra retina e regolare?Come minimizzare il codice quando si utilizzano immagini diverse per iPad e iPhone?

+0

perché non utilizzare i controlli standard che si ridimensionano automaticamente tra iPhone e iPad invece di creare controlli personalizzati? – melsam

+0

Tutta la mia interfaccia utente è grafica personalizzata. Controlli UIKit, le mie immagini. – frankie

+0

Perché hanno dimensioni diverse su iPad !? Quasi tutti i controlli UIKit hanno le stesse dimensioni su entrambi i dispositivi. Solo la barra di navigazione cambia altezza. – calimarkus

risposta

7

Avrai bisogno solo di passare il nome dell'immagine di base .. diciamo che il nostro nome immagine è "Apple.png" ,, quindi scrivi il nome dell'immagine get come questo UIImage *image = [UIImage ImageNamed:@"Apple.png"] e il nome dell'immagine per i seguenti casi sarà:

1. iPad> mettere ~ ipad, nome dell'immagine sarà "Apple~ipad.png"

2. iPhone> mettere ~ iphone, nome dell'immagine sarà "Apple~iphone.png"

3.for retina visualizzazione> metti @ 2x, il nome dell'immagine sarà "[email protected]"

4.se hai diffrenet immagine per retina diplay per iPad e iPhone sarà come questo ,, per iPad "[email protected]~ipad.png" ,, per iPhone "[email protected]~iphone.png"

Se è il nome in questo modo iOS in grado di rilevare il nome migliore immagine partita e caricarla.

+1

sembra una risposta legittima –

+0

Grazie. Questa è una risposta molto utile. – frankie

2

Se si desidera avere versioni per retina e non retina, è sufficiente salvare due versioni della risorsa nel pacchetto. Se il tuo asset è chiamato button.png risparmi:

-button.png per la versione non retina. [email protected] per la versione del display retina.

tuo codice:

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

Il sistema controlla automaticamente per la @ 2x.png se retina o si riprenderà l'altra per non retina

È possibile inserire myImage nella vostra interfaccia utente personalizzata, e il sistema operativo fa il resto per te ;-)

Problemi correlati