2012-09-24 20 views
9

Ho visto un paio di post su UIImage che carica automaticamente l'immagine nomefile-568.png nel nuovo iOS6, ma non riesco a ricrearlo nella classe UIImageView.ios6 UIImageView - Caricamento immagine -568h

Sto usando lo Storyboard (non è la mia app, devo solo fare alcuni controlli), e ho un layout semplice con solo la Vista immagine ridimensionata per adattarsi, nessun codice nel controller della vista, e ho sicuro il nomefile.png e nomefile-568h.png esistono (così come [email protected] nel caso in cui) ma quando lo carico nel simulatore iOS6. Questo è stato per iOS 4 e 5, caricando l'immagine @ 2x per retina, non sembra funzionare in iOS6 però. Qualche idea?

L'immagine si chiama Default.png poiché è la stessa dell'immagine di lancio, potrebbe essere questo il problema?

Grazie per qualsiasi aiuto in anticipo

+0

ho trovato risposta qui: - http://stackoverflow.com/questions/12532405/images-for-iphone-5-retina-display - http://stackoverflow.com/questions/12431445/iphone -5-cosa-naming-convention-il-nuovo-immagini-have da seguire – Thesalan

risposta

32

iOS6 non carica automaticamente -568h come fa con le immagini @ 2x. L'unica eccezione è la schermata predefinita, ma oltre a questo devi impostare manualmente l'immagine 568h da solo.

Ho creato un codice per simulare il comportamento di caricamento delle immagini -568h quando si utilizza il metodo [UIImage imageNamed:@""], ma dall'IB non conosco il modo. Se siete interessati a una soluzione del genere, lo controllo fuori a http://angelolloqui.com/blog/20-iPhone5-568h-image-loading

+0

in realtà, ho scoperto che se a specificare l'immagine all'interno IB come dire "image.png", quindi non importa che tipo di telefono Io uso il simulatore, carica il file corretto, [@ 2x] per retina da 3,5 "e [-568h @ 2x] per retina da 4". Se provo a codificare io stesso utilizzando [UIImage imageNamed:] allora non funziona. Dispari. Dovrò fare lo stesso di @ Angel Garcia Olloqui sopra. – PKCLsoft

+1

Ho provato il tuo codice e mentre funziona correttamente nel simulatore, non viene compilato per un dispositivo reale. Il #include di non riesce a compilare. – PKCLsoft

+0

Non trovo una cosa nel codice: restituendo lo stesso metodo alla fine, non crea un ciclo ricorsivo? –

4

genere, è necessario utilizzare solo 568H per l'immagine di lancio. Se ti accorgi che utilizzi risorse immagine diverse all'interno della tua app per la nuova altezza di visualizzazione, dovresti considerare che potresti rendere l'interfaccia utente troppo statica.

Il luogo più ovvio la gente vuole usare 568H per le immagini è per le immagini di sfondo. Un'alternativa è semplicemente avere una risorsa che ha le dimensioni più grandi possibili e allinearla correttamente usando la proprietà contentMode di UIView.

Ma forse hai qualcosa che galleggia nell'immagine in alto e in basso, in modo da contentMode non lo risolve. Si potrebbe considerare che i floaters superiore e inferiore dovrebbero probabilmente essere viste separate comunque.

Ricordate, siamo sempre stati facendo applicazioni con altezze variabili. Ogni volta che si apre una tastiera, è come se la dimensione dello schermo si fosse ridotta.

+1

Non sono d'accordo con la tua ultima frase, la tastiera è mostrata in cima ad una vista, non si restringe la vista a tutti. Avrebbe senso che iOS rilevasse correttamente -568h risorse, dal momento che gestisce le immagini @ 2x e il sistema operativo stesso ha bisogno di -568h per la schermata iniziale. Penso che ci costringa a scrivere codice orribile per gestire il rapporto dello schermo di iPhone 5. –

+0

Se ritieni che Apple ti stia costringendo a "scrivere codice orribile", dovresti probabilmente fare un passo indietro e vedere se stai violando inutilmente le convenzioni Apple. In iOS, questo in genere comporta più lavoro, meno payoff. –