A meno di una settimana del lancio di iPhone 6 e iPhone 6 Plus nei principali mercati (Italia esclusa) gli sviluppatori si trovano davanti a un nuovo cambio di dimensioni, dopo quello di 3 anni fa con iPhone 5 e i suoi 4 pollici. iPhone 6 e iPhone 6 Plus arrivano infatti nelle due nuove versioni rispettivamente da 4.7 e 5.5 pollici, buona cosa per gli utenti finali, un po’ meno forse per noi sviluppatori iOS.
E invece una buona notizia arriva dai primi test effettuati con iOS Simulator: se avete scritto un’ app che funziona correttamente su iPhone 5, noterete con piacere che questa funzionerà alla perfezione anche con iPhone 6 e 6 Plus. Il semplice “just works” promesso (e realizzato) da Schiller nel Keynote ha però qualche spiegazione tecnica.
Se si compila un app creata con iOS 7 e si controlla tramite il debugger la dimensioni del display o il frame delle view riceverete queste, apparentemente, strane informazioni:
- iPhone 4S:
{{0, 0}, {320, 480}} - iPhone 5:
{{0, 0}, {320, 568}} - iPhone 6:
{{0, 0}, {320, 568}} - iPhone 6+:
{{0, 0}, {320, 568}}
Questo accade se il vostro progetto non ha presenti le Launch Images per i nuovi due iPhone; Xcode intuisce che l’app non è ottimizzata e semplicemente allarga l’app fino a riempire l’intero schermo.
Come ottimizzare quindi le nostre app per supportare le risoluzioni e dimensioni dei nuovi display?
Per poter ottimizzare l’app per i due nuovi device è necessario caricare le due nuove immagini di lancio con le dimensioni di 750 x 1334 per iPhone 6 e 2208×1242 per iPhone 6 Plus. Inoltre, è necessario aggiungere tutti gli assets ottimizzati per il nuovo schermo HD con il suffisso @3x oltre al canonico @2x riservato ai Retina Display.
È importante sottolineare come la risoluzione richiesta per iPhone 6 Plus non sia quella reale; il device infatti ha uno schermo di 1920×1080, ma iOS automaticamente effettua un downscaling delle varie view.
Ultima nota: Apple nel scegliere le nuove risoluzioni ha tenuto conto dell’attuale di iPhone 5 e ha usato un aspect ratio molto simile così da effettuare l’upscaling senza traumi per gli sviluppatori:
- iPhone 5 => 1136/640 = 1,775
- iPhone 6 => 1334/750 = 1,778
- iPhone 6+ => 2208/1248 = 1,769
Geniale scelta di dimensioni da parte di Apple!











7 Responses to “Come ottimizzare le app per i nuovi display di iPhone 6 e iPhone 6 Plus”
15 Settembre 2014
Giordano VicoliArticolo molto interessante e utile. Ho scaricato e installato l’ultima release di Xcode 6, o aperto un progetto sviluppato con Xcode 5.1 per poterlo aggiornare e non ho trovato le nuove immagini di lancio 750×1334 e 2208×1242 da aggiornare. C’è qualche procedura da seguire?
Grazie in anticipo e saluti,
Giordano
15 Settembre 2014
RaffaeleGiordano Vicoli, non è proprio così semplice come dicono nell’articolo, devi modificare lo storyboard con l’auto-layout (sempre se non lo era), poi aggiungi la xib dal nome LaunchView (se non ricordo male) … vedi ad esempio creando un nuovo progetto, lavora sulla view di base da 600 x 600 … ovviamente oltre a questo crei i set imaggini (normale, @2x e @3x).
15 Settembre 2014
Giordano VicoliRiguardo al precedente posto ho trovato la soluzione.
Grazie comunque e saluti,
Giordano Vicoli
16 Settembre 2014
Francesco NovelliCiao,
per le Launch Image si deve aggiungere un nuovo Launch Image Sets che metti gli spazi per iPhone 6, 6 Plus.
Per lo storyboard, se usi storyboard senza autolayout e funziona su iPhone 5 e non metti le immagini di lancio va bene; se metti quelle devi prevedere tutto e magari lavorare con i nuovi metodi di width e height; questo però significa ottimizzare l’esperienza d’uso a iPhone 6/6+.
16 Settembre 2014
neronorxPensa che mi ero talmente soffermato su altre ca…te che a questi passaggi non ci avevo nemmeno pensato.
Ora la vera mia tortura sono il convertire tutte le immagini da @2x a @3x senza perdere la qualità.
Francesco,sto aspettando un’altro tuo libro , magari su Swift Code
26 Settembre 2014
FrancescoDomanda: devo aggiornare l’applicazione di un mio cliente, proprio adesso che è uscito iPhone 6 e volevo sapere se devo obbligatoriamente convertire tutte le immagini presenti nell’app a @3x, pena il rifiuto dell’applicazione, oppure posso mantenere le attuali e lasciare che sia iPhone ad occuparsi dello “scaling” ?
Grazie.
26 Settembre 2014
Francesco NovelliNo Francesco Non c’è bisogno per farsi approvare l’app. Il @3x è solo per avere una buona visualizzazione che non sgrani su iPhone 6+