Come sviluppare o migrare app per la risoluzione dello schermo di iPhone 5?


495

Il nuovo display dell'iPhone 5 ha un nuovo formato e una nuova risoluzione (640 x 1136 pixel).

Cosa è necessario per sviluppare applicazioni nuove o di transizione alle nuove dimensioni dello schermo?

Cosa dovremmo tenere a mente per rendere le applicazioni "universali" sia per i display più vecchi che per le nuove proporzioni widescreen?

Risposte:


481
  1. Scarica e installa l'ultima versione di Xcode .
  2. Imposta un file di schermata di avvio per la tua app (nella scheda generale delle impostazioni di destinazione). Ecco come utilizzare le dimensioni complete di qualsiasi schermo, comprese le dimensioni della vista divisa per iPad in iOS 9.
  3. Metti alla prova la tua app e, si spera, non fare nient'altro, dal momento che tutto dovrebbe funzionare magicamente se avessi impostato correttamente le maschere di ridimensionamento automatico o avessi usato il layout automatico.
  4. In caso contrario, regola i layout di visualizzazione, preferibilmente con Layout automatico.
  5. Se c'è qualcosa che devi fare per gli schermi più grandi in particolare, allora sembra che devi controllare l'altezza in [[UIScreen mainScreen] bounds]quanto non sembra esserci un'API specifica per quello. A partire da iOS 8 ci sono anche classi di dimensioni che astraggono le dimensioni dello schermo in modo regolare o compatto verticalmente e orizzontalmente e sono modi consigliati per adattare la tua interfaccia utente.

1
Forse è una cosa da sparare al messaggero. Nuova risoluzione E proporzioni? Nuova autorotazione? Noooo! In realtà, potrebbe essere utile un maggiore controllo dell'autorotazione.
Rhythmic Fistman,

89
Vale la pena notare che [UIImage imageNamed: @ "background.png"] caricherà ancora solo "background.png" o "background@2x.png", non caricherà "background-568h@2x.png" se esiste .
tvon,

1
L'aggiunta di "Default-568h@2x.png" è sufficiente o ci sono opzioni extra nelle impostazioni di build che possiamo / dovremmo regolare?
Lukasz,

3
@Lukasz è sufficiente (e unico modo) per supportare un'altezza di 1136 px. Il fatto che la tua app si estenda correttamente dipende da come hai impostato le tue visualizzazioni, ma anche se hai codificato tutto, non dovrebbe essere molto difficile impostare maschere di ridimensionamento automatico o autolayout.
Filip Radelic,

1
@FilipRadelic - La risoluzione specificata, ovvero 1136 * 960, è 1136 * 640 .. ?? ..
NiKKi

117

Se hai un'app sviluppata per iPhone 4S o versioni precedenti, verrà eseguita in modalità letterbox su iPhone 5.

Per adattare la tua app al nuovo schermo più alto, la prima cosa da fare è cambiare l'immagine di lancio in: Default-568h@2x.png. Le sue dimensioni dovrebbero essere 1136x640 (HxL). Sì, avere l'immagine predefinita nella nuova dimensione dello schermo è la chiave per consentire alla tua app di prendere l'intero schermo del nuovo iPhone 5 .

(Si noti che la convenzione di denominazione funziona solo per l'immagine predefinita. La denominazione di un'altra immagine "Image-568h@2x.png" non comporta il caricamento al posto di "Image@2x.png". Se è necessario caricare immagini diverse per schermi di dimensioni diverse, dovrai farlo a livello di codice.)

Se sei molto fortunato, potrebbe essere così ... ma con ogni probabilità, dovrai fare qualche altro passo.

  • Assicurati che i tuoi Xib / Visualizzazioni utilizzino il layout automatico per ridimensionare se stessi.
  • Usa molle e puntoni per ridimensionare le viste.
  • Se questo non è abbastanza buono per la tua app, progetta il tuo xib / storyboard per una dimensione dello schermo specifica e riposizionalo in modo programmatico per l'altra.

Nel caso estremo (quando nessuna delle precedenti è sufficiente), progettare i due Xib e caricare quello appropriato nel controller di visualizzazione.

Per rilevare le dimensioni dello schermo:

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
    CGSize result = [[UIScreen mainScreen] bounds].size;
    if(result.height == 480)
    {
        // iPhone Classic
    }
    if(result.height == 568)
    {
        // iPhone 5
    }
}

ciao sanjay, dato che dobbiamo scoprire se il suo iPhone 5 o precedente, quindi dovremo ridimensionare tutto di conseguenza, come dico che ho una vista da tavolo con altezza 367 con barra di navigazione e tabbar, dovrò ridimensionare per iPhone 5
Raheel Sadiq,

2
Che dire di iPod touch? E la prossima generazione di iPhone? Uno dovrebbe riferirsi alle dimensioni dello schermo,
3,5 pollici

2
Un altro aspetto da tenere in considerazione è che viewDidLoad viene chiamato prima che il tuo xib venga ridimensionato, quindi se stai facendo dei calcoli basati su cose nel pennino, fai attenzione a come può cambiare la posizione (o esegui questi calcoli in viewWillAppear).
Kendall Helmstetter Gelner

30

L'unica cosa veramente necessaria da fare è aggiungere un'immagine di avvio denominata "Default-568h@2x.png" alle risorse dell'app, e in generale (se sei abbastanza fortunato) l'app funzionerà correttamente.

Nel caso in cui l'app non gestisca gli eventi touch, assicurati che la finestra della chiave abbia le dimensioni appropriate. La soluzione alternativa è impostare il frame corretto:

[window setFrame:[[UIScreen mainScreen] bounds]]

Esistono altri problemi non correlati alla dimensione dello schermo durante la migrazione a iOS 6. Leggi le Note di rilascio di iOS 6.0 per i dettagli.


22

A volte (per le app pre-storyboard), se il layout sarà sufficientemente diverso, vale la pena specificare un xib diverso in base al dispositivo (vedi questa domanda - dovrai modificare il codice per gestire iPhone 5) nella viewController init, poiché nessuna quantità di twiddling con maschere di ridimensionamento automatico funzionerà se hai bisogno di grafica diversa.

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

    NSString *myNibName;
    if ([MyDeviceInfoUtility isiPhone5]) myNibName = @"MyNibIP5";
    else myNibName = @"MyNib";

    if ((self = [super initWithNibName:myNibName bundle:nibBundleOrNil])) {


...

Ciò è utile per le app destinate alle versioni iOS precedenti.


+1 Qualcosa di cui essere stanchi, tuttavia, è la compatibilità futura. Attualmente questo pezzo di codice non è sicuro in quanto tiene conto solo del dispositivo iPhone 5, un controllo per le dimensioni dello schermo sarebbe un'alternativa più sicura.
Storditore

È vero - questo potrebbe far parte dell'utilità che restituisce il tipo di dispositivo - era solo un esempio per mostrare come usare pennini diversi, non proprio per ottenere il dispositivo.
SomaMan

20

Qui puoi trovare un bel tutorial (per MonoTouch, ma puoi usare le informazioni anche per i progetti Non MonoTouch):
http://redth.info/get-your-monotouch-apps-ready-for-iphone-5 -iOS-6-oggi /

  1. Crea una nuova immagine per la tua schermata iniziale / predefinita ( 640 x 1136 pixel ) con il nome " Predefinito-568h@2x.png "

  2. Nel simulatore iOS , vai al menu Hardware -> Dispositivo e seleziona " iPhone (Retina 4 pollici) "

  3. Crea altre immagini, ad esempio immagini di sfondo

  4. Rileva iPhone 5 per caricare le tue nuove immagini:

public static bool IsTall
{
    get {
        return UIDevice.currentDevice.userInterfaceIdiom
                    == UIUserInterfaceIdiomPhone
                && UIScreen.mainScreen.bounds.size.height
                    * UIScreen.mainScreen.scale >= 1136;
    }
}

private static string tallMagic = "-568h@2x";
public static UIImage FromBundle16x9(string path)
{
    //adopt the -568h@2x naming convention
    if(IsTall())
    {
        var imagePath = Path.GetDirectoryName(path.ToString());
        var imageFile = Path.GetFileNameWithoutExtension(path.ToString());
        var imageExt = Path.GetExtension(path.ToString());
        imageFile = imageFile + tallMagic + imageExt;
        return UIImage.FromFile(Path.Combine(imagePath,imageFile));
    }
    else
    {
        return UIImage.FromBundle(path.ToString());
    }
}

13

È facile per la migrazione di iPhone5 e iPhone4 tramite XIBs .........

UIViewController *viewController3;
if ([[UIScreen mainScreen] bounds].size.height == 568)
{
    UIViewController *viewController3 = [[[mainscreenview alloc] initWithNibName:@"iphone5screen" bundle:nil] autorelease];               
}    
else
{
     UIViewController *viewController3 = [[[mainscreenview alloc] initWithNibName:@"iphone4screen" bundle:nil] autorelease];
}

12

Risolvo questo problema qui . Aggiungi ~ 568h @ 2x suffisso alle immagini e ~ 568h a xib's. Non sono necessari ulteriori controlli di runtime o modifiche al codice.


Aggiungi queste classi nel progetto. Non è necessario scrivere codice aggiuntivo. Ad esempio, hai un file xib con immagini di sfondo con risoluzione 320x480, 640x960, 640x1136 (iPhone 3, iPhone 4, iPhone 5). Basta impostare la maschera di ridimensionamento automatico corretta e denominare images image.png, image@2x.png, image~568h@2x.png.
Shimanski Artem,

@ShimanskiArtem Ma noto che alcuni componenti corrono in altre posizioni! Hai qualche idea ????
Adel,

Controlla le tue maschere di ridimensionamento automatico. Non vedo altro motivo.
Shimanski Artem,

10

Avevo aggiunto la nuova immagine di lancio predefinita e (nel dare un'occhiata a molte altre risposte SE ...) mi sono assicurato che i miei storyboard si auto-ridimensionassero da soli e sottoesposizioni, ma la retina da 4 pollici continuava a essere letterbox.

Poi ho notato che il mio plist di informazioni aveva un elemento pubblicitario per " Avvia immagine " impostato su " Default.png ", che ho quindi rimosso e magicamente il letterbox non è più apparso. Spero che questo salvi a qualcun altro la stessa follia che ho sopportato.


9

Immagino che non funzionerà in tutti i casi, ma nel mio progetto particolare mi ha evitato la duplicazione dei file NIB:

Da qualche parte in common.hte puoi fare queste definizioni in base all'altezza dello schermo:

#define HEIGHT_IPHONE_5 568
#define IS_IPHONE   ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
#define IS_IPHONE_5 ([[UIScreen mainScreen] bounds ].size.height == HEIGHT_IPHONE_5)

Nel controller di base:

- (void)viewDidLoad
{
    [super viewDidLoad];
    if (IS_IPHONE_5) {
        CGRect r = self.view.frame;
        r.size.height = HEIGHT_IPHONE_5 - 20;
        self.view.frame = r;
    }
    // now the view is stretched properly and not pushed to the bottom
    // it is pushed to the top instead...

    // other code goes here...
}

9

In un constants.hfile è possibile aggiungere queste istruzioni di definizione:

 #define IS_IPAD UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad 
 #define IS_IPHONE UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone
 #define IS_WIDESCREEN (fabs((double)[[UIScreen mainScreen] bounds].size.height - (double)568) < DBL_EPSILON) 
 #define IS_IPHONE_5 (!IS_IPAD && IS_WIDESCREEN)

9

Per determinare se la tua app può supportare iPhone 5 Retina, usa questo: (Potrebbe essere più robusto per restituire il tipo di display, Retina 4S, ecc., Ma come è scritto sotto, ritorna solo se l'iPhone supporta iOS5 Retina come Si o no)

In un file ".h" comune aggiungere:

BOOL IS_IPHONE5_RETINA(void);

In un file ".m" comune aggiungere:

BOOL IS_IPHONE5_RETINA(void) {
    BOOL isiPhone5Retina = NO;
    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
        if ([UIScreen mainScreen].scale == 2.0f) {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            CGFloat scale = [UIScreen mainScreen].scale;
            result = CGSizeMake(result.width * scale, result.height * scale);

            if(result.height == 960){
                //NSLog(@"iPhone 4, 4s Retina Resolution");
            }
            if(result.height == 1136){
                //NSLog(@"iPhone 5 Resolution");
                isiPhone5Retina = YES;
            }
        } else {
            //NSLog(@"iPhone Standard Resolution");
        }
    }
    return isiPhone5Retina;
}

8

Prima di tutto crea due xib e collega tutti i delegati, la classe principale al xibe poi puoi mettere in questa condizione menzionata sotto nel tuo appdelegate.mfile in

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

    if ([[UIScreen mainScreen] bounds].size.height == 568)
        {

        self.ViewController = [[ViewController alloc] initWithNibName:@"ViewControlleriphone5" bundle:nil];
        }

        else
        {
             self.ViewController = [[ViewController alloc] initWithNibName:@"ViewControlleriphone4" bundle:nil];

        }

puoi usarlo ovunque nel programma a seconda delle tue esigenze anche nelle tue ViewControllerclassi. Ciò che conta di più è che hai creato due xibfile separati periphone 4(320*480) and iphone 5(320*568)


7

Prova il metodo seguente in una classe singleton:

-(NSString *)typeOfDevice
    {
        if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
        {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            if(result.height == 480)
            {
                return @"Iphone";
            }
            if(result.height == 568)
            {
                return @"Iphone 5";
            }
        }
        else{
            return @"Ipad";;
        }


        return @"Iphone";
    }

7

Puoi utilizzare la Auto Layoutfunzione e creare il design utilizzando la risoluzione dello schermo di iPhone 5 e funzionerà per entrambi i dispositivi da 4 "e 3,5", ma in questo caso dovresti avere una conoscenza sufficiente del layout manager.


Questo non funzionerà per i dispositivi che non supportano iOS 6.
Jonypz,

7

Verifica boundscon568 fallirà in modalità orizzontale. iPhone 5 si avvia solo in modalità verticale, ma se si desidera supportare le rotazioni, anche il "controllo" di iPhone 5 dovrà gestire anche questo scenario.

Ecco una macro che gestisce lo stato di orientamento:

#define IS_IPHONE_5 (CGSizeEqualToSize([[UIScreen mainScreen] preferredMode].size, CGSizeMake(640, 1136)))

L'uso della chiamata "PreferredMode" proviene da un altro post che ho letto qualche ora fa, quindi non mi è venuta in mente questa idea.


6

Prima mostra questa immagine. In quell'immagine mostri un avviso per il supporto di Retina 4, quindi fai clic su questo avviso e fai clic su Aggiungi in modo che la schermata iniziale di Retina 4 si aggiunga automaticamente al tuo progetto.

Mostra l'immagine qui

e dopo aver usato questo codice:

if([[UIScreen mainScreen] bounds].size.height == 568)
    {
        // For iphone 5
    }
    else
    {
        // For iphone 4 or less
    }

6

Non ho mai affrontato un simile problema con nessun dispositivo in quanto ho avuto una base di codice per tutti, senza valori hardcoded. Quello che faccio è avere l'immagine di dimensioni massime come risorsa anziché una per ogni dispositivo. Ad esempio, ne avrei uno per il display retina e lo mostrerei come aspetto adatto in modo che sia visualizzazioni come su ogni dispositivo. Venendo a decidere il frame del pulsante, ad esempio, in fase di esecuzione. Per questo utilizzo il valore% della vista brevetto, ad esempio, se voglio che la larghezza sia la metà della vista padre, prendo il 50% della vista padre e lo stesso vale per altezza e centro.

Con questo non ho nemmeno bisogno degli xib.


5

Puoi usare questa definizione per calcolare se stai usando iPhone 5 in base alle dimensioni dello schermo:

#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )

quindi usa una semplice ifdichiarazione:

    if (IS_IPHONE_5) {

    // What ever changes
    }

4

Peter, dovresti davvero dare un'occhiata a Canappi, fa tutto per te, tutto quello che devi fare è specificare il layout in quanto tale:

button mySubmitButton 'Sumbit' (100,100,100,30 + 0,88,0,0) { ... }

Da lì Canappi genererà il codice obiettivo-c corretto che rileva il dispositivo su cui è in esecuzione l'app e utilizzerà:

(100,100,100,30) for iPhone4
(100,**188**,100,30) for iPhone 5

Canappi funziona come Interface Builder e Story Board combinati, tranne per il fatto che è in forma testuale. Se disponi già di file XIB, puoi convertirli in modo da non dover ricreare l'intera interfaccia utente da zero.


Grazie mille meta, darò un'occhiata a questo, ma sono un programmatore molto nuovo e vorrei davvero imparare come gestirlo in Objective-C pulito.
PeterK,

4

Puoi controllare manualmente le dimensioni dello schermo per determinare su quale dispositivo sei:

#define DEVICE_IS_IPHONE5 ([[UIScreen mainScreen] bounds].size.height == 568)

float height = DEVICE_IS_IPHONE5?568:480;
if (height == 568) {
    // 4"

} else {

    // 3"

}

3

È possibile aggiungere questo codice:

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
        if ([[UIScreen mainScreen] respondsToSelector: @selector(scale)]) {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            CGFloat scale = [UIScreen mainScreen].scale;
            result = CGSizeMake(result.width * scale, result.height * scale);

            if(result.height == 960) {
                NSLog(@"iPhone 4 Resolution");
            }
            if(result.height == 1136) {
              NSLog(@"iPhone 5 Resolution");
            }
        }
        else{
            NSLog(@"Standard Resolution");
        }
    }

2
Questo è in realtà leggermente sbagliato. Qualsiasi iPhone con iOS 4.0 o successivo risponderà al scaleselettore UIScreene avrai un caso in cui il tuo codice "risoluzione standard" non viene eseguito.
Filip Radelic,

3

Questo è un vero codice universale, puoi creare 3 diversi storyboard:

Imposta la modalità universale del tuo progetto e imposta il tuo iPhone principale con lo storyboard iPhone5 e l'iPad principale con storyboard target iPad, ora aggiungi un nuovo target storyboard per iPhone e modifica la risoluzione per iPhone 4s o meno ora implementa AppDelegate.m

iPhone4 / 4s (è lo stesso per 3 / 3Gs) uno per iPhone5 e rendere il progetto universale , con un nuovo target Storyboard per iPad, ora su AppDelegate.m sotto l' didFinishLaunchingaggiunta di questo codice:

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
        UIStoryboard *storyBoard;

        CGSize result = [[UIScreen mainScreen] bounds].size;
        CGFloat scale = [UIScreen mainScreen].scale;
        result = CGSizeMake(result.width *scale, result.height *scale);

//----------------HERE WE SETUP FOR IPHONE4/4s/iPod----------------------

        if(result.height == 960){
            storyBoard = [UIStoryboard storyboardWithName:@"iPhone4_Storyboard" bundle:nil];
            UIViewController *initViewController = [storyBoard instantiateInitialViewController];
            [self.window setRootViewController:initViewController];
        }

//----------------HERE WE SETUP FOR IPHONE3/3s/iPod----------------------

        if(result.height == 480){
            storyBoard = [UIStoryboard storyboardWithName:@"iPhone4_Storyboard" bundle:nil];
            UIViewController *initViewController = [storyBoard instantiateInitialViewController];
            [self.window setRootViewController:initViewController];
        }
    }

        return YES;
 }

Quindi hai creato un'app universale per iPhone 3 / 3Gs / 4 / 4s / 5 All gen di iPod e tutti i tipi di iPad

Ricorda di integrare tutte le IMG con myImage.pngemyImage@2x.png


2

Secondo me il modo migliore per affrontare tali problemi ed evitare un paio di condizioni necessarie per controllare l'altezza del dispositivo, è utilizzare il relativo frame per le viste o qualsiasi elemento dell'interfaccia utente che si sta aggiungendo alla vista ad esempio: se si sta aggiungendo qualche elemento dell'interfaccia utente che desideri dovrebbe essere nella parte inferiore della vista o appena sopra la barra delle schede, quindi dovresti prendere l'origine y rispetto all'altezza della tua vista o rispetto alla barra delle schede (se presente) e abbiamo anche il ridimensionamento automatico della proprietà. Spero che questo funzioni per te


1

Invece di utilizzare una serie di condizionali è possibile ridimensionare automaticamente la vista utilizzando le dimensioni dello schermo.

int h = [[UIScreen mainScreen] bounds].size.height;
int w = [[UIScreen mainScreen] bounds].size.width;
self.imageView.frame = CGRectMake(20, 80, (h-200), (w-100));

Nel mio caso voglio una vista che riempia lo spazio tra alcuni campi di input in alto e alcuni pulsanti in basso, quindi fisso in alto a sinistra e variabile in basso a destra in base alle dimensioni dello schermo. La mia app riempie la visualizzazione dell'immagine con la foto scattata dalla fotocamera, quindi voglio tutto lo spazio che posso ottenere.


1

Se devi convertire un'app già esistente in universale, devi selezionare il file xib corrispondente-> mostra Utilità-> Mostra finestra di ispezione Dimensione.

Nella finestra di ispezione Dimensione è possibile visualizzare Ridimensionamento automatico, utilizzando questo strumento è possibile convertire l'app iOS esistente.


0

Utilizzando xCode 5, selezionare "Esegui migrazione al catalogo risorse" in Progetto> Generale.

Quindi utilizza "Mostra nel mirino" per trovare l'immagine di avvio, puoi modificarla fittizia in modo che sia 640x1136, quindi trascinala nel catalogo delle risorse come mostrato nell'immagine seguente.

Assicurati che sia la sezione iOS7 che iOS6 R4 abbia un'immagine 640x1136. La prossima volta che avvierai l'app, le barre nere scompariranno e la tua app utilizzerà uno schermo da 4 pollici

inserisci qui la descrizione dell'immagine


0

Nota bene: nel nuovo Xcode devi aggiungere questo file immagine Default-568h@2x.png agli asset


0

Usa il Auto Layout funzione per le viste. Si adatterà automaticamente a tutte le risoluzioni.

Crea due xib per un controller con nome controller con suffisso ~ iphone o ~ ipad. Al momento della compilazione, Xcode prenderà lo xib giusto in base al dispositivo.

Utilizzare le classi di dimensioni, se si desidera creare un singolo xib per iPhone e iPad, se la vista è abbastanza semplice da effettuare il port su iPhone e iPad.


0

C'è un leggero problema durante il test su dispositivo iOS e simulatore iOS. Sembra che il simulatore (XCode 6.0.1) dia valori commutati per larghezza e altezza in[[UIScreen mainScreen] bounds].size seconda dell'orientamento del dispositivo.

Quindi questo potrebbe essere un problema quando si determina la giusta dimensione dello schermo fisico. Questo codice aiuta anche a distinguere tutti i 2014. Generazioni di modelli di iPhone:

  • iPhone4s
  • iPhone5 (e iPhone5s)
  • iPhone6 ​​(e iPhone6 ​​+)

Può anche essere facilmente modificato per distinguere ad esempio iPhone6 ​​da iPhone6 ​​+.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    CGSize iOSDeviceScreenSize = [[UIScreen mainScreen] bounds].size;

    if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone)
    {
        if (iOSDeviceScreenSize.width > 568 || // for iOS devices
            iOSDeviceScreenSize.height > 568) // for iOS simulator
        {   // iPhone 6 and iPhone 6+

            // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone6
            storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone6" bundle:nil];

            NSLog(@"loaded iPhone6 Storyboard");
        }
        else if (iOSDeviceScreenSize.width == 568 || // for iOS devices
                 iOSDeviceScreenSize.height == 568) // for iOS simulator
        {   // iPhone 5 and iPod Touch 5th generation: 4 inch screen (diagonally measured)

            // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone5
            storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone5" bundle:nil];

            NSLog(@"loaded iPhone5 Storyboard");
        }
        else
        {   // iPhone 3GS, 4, and 4S and iPod Touch 3rd and 4th generation: 3.5 inch screen (diagonally measured)

                // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone4
            storyboard = [UIStoryboard story    boardWithName:@"MainStoryboard_iPhone" bundle:nil];

                NSLog(@"loaded iPhone4 Storyboard");
        }
    }
    else if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad)
    {   // The iOS device = iPad

        storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPadnew" bundle:nil];

        NSLog(@"loaded iPad Storyboard");
    }

    // rest my code
}

0

Suggerirei di utilizzare la maschera di ridimensionamento automatico nelle tue applicazioni in base all'interfaccia dell'interfaccia utente, risparmia molti problemi ed è meglio che creare un'interfaccia utente diversa per gli schermi di iPhone 4 e 5.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.