Tu sei qui

Objective-C

GianlucaBove.it

...just another technical blog...

Gestire risoluzione iPhone5 usando due xib con un unico ViewController

In questo articolo spiegherò passo-passo come poter utilizzare uno xib differente se l'app viene utilizzata da un iPhone 5, utilizzando lo stesso ViewController su più xib.



1) Creare un secondo xib (File -> New -> selezionare "User Interface" -> "Empty" e salvare).

In questo modo si crea un nuovo xib vuoto, nel mio caso lo xib per iPhone da 3.5" si chiamava RadioViewController.xib, ho salvato il nuovo xib per iPhone 5 col nome "RadioViewController5.xib".



2) Far puntare il "File's Owner" allo stesso ViewController del vecchio xib. Per farlo, selezionare il nuovo file xib, selezionare "File's Owners" e modificare in "Identity Inspector" selezionando la View Controller come classe custom. Nel mio caso ho selezionato "RadioViewController".



3) Creare una UIView dentro il nuovo xib vuoto. Selezionare come attributo 'Size' = "Retina 4 Full Screen".



4) Ricreare tutti i controlli, pulsanti, selettori, etichette, etc. dentro il nuovo xib per iPhone 5. Ridimensionarli e riposizionarli per ottimizzarli nel nuovo display 4".



5) Effettuare tutte le connessioni da/verso il File's Owner così come era stato fatto per il vecchio xib.



Finalmente, aggiungete / estendete il seguente metodo nel vostro ViewController (ovviamente adattando i nomi al vostro caso).


- (void)loadView {
    [super viewDidLoad];
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
        CGSize result = [[UIScreen mainScreen] bounds].size;
        if (result.height == 568) {
            // iPhone 5
            [[NSBundle mainBundle] loadNibNamed:@"RadioViewController5" owner:self options:nil];
        } else {
            // iPhone classico
            [[NSBundle mainBundle] loadNibNamed:@"RadioViewController" owner:self options:nil];
        }
    }
}

Fatto!