Ce que j'ai fait récemment, c'est ajouter une déclaration de définition dans toutes les classes dont j'ai besoin pour vérifier le dispositif. Cela peut également être fait dans n'importe quel fichier d'en-tête global.
#define IS_IPHONE (!IS_IPAD)
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPhone)
Le test bool est tiré de Détecter l'écran de l'iphone 5 4 .
bool isiPhone5 = CGSizeEqualToSize([[UIScreen mainScreen] preferredMode].size,CGSizeMake(640, 1136));
if (isiPhone5) {
// Setup For iPhone 5 Screen Size
UIStoryboard *storyBoard;
storyBoard = [UIStoryboard storyboardWithName:@"MyiPhone5StoryboardName" bundle:nil];
UIViewController *initViewController = [storyBoard instantiateInitialViewController];
[self.window setRootViewController:initViewController];
}
Cette méthode fonctionne parfaitement si vous utilisez déjà des story-boards et que vous souhaitez uniquement modifier le storyboard par rapport aux valeurs par défaut de votre projet pour les appareils iPhone 5. Si vous partez de zéro avec un projet existant sans storyboard, vous pouvez procéder de cette manière.
#define IS_IPHONE (!IS_IPAD)
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPhone)
bool isiPhone5 = CGSizeEqualToSize([[UIScreen mainScreen] preferredMode].size,CGSizeMake(640, 1136));
if (isiPhone5) {
// Load iPhone 5 Storyboard
UIStoryboard *storyBoard;
storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone5" bundle:nil];
UIViewController *initViewController = [storyBoard instantiateInitialViewController];
[self.window setRootViewController:initViewController];
}
else if (IS_IPAD) {
// Load IPAD StoryBoard
UIStoryboard *storyBoard;
storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPad" bundle:nil];
UIViewController *initViewController = [storyBoard instantiateInitialViewController];
[self.window setRootViewController:initViewController];
}
else {
// Load the iPhone 3.5" storyboard
UIStoryboard *storyBoard;
storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
UIViewController *initViewController = [storyBoard instantiateInitialViewController];
[self.window setRootViewController:initViewController];
}
Lorsque je démarre un projet, je conçois la version 3.5" de l'iPhone dans des storyboards (si j'utilise des storyboards), puis lorsque j'ai terminé cette conception, je vais dans mes fichiers de projet et je trouve le fichier storyboard. Puisqu'un fichier storyboard n'est qu'un fichier de mise en page XML, je peux prendre ce fichier et le charger dans mon éditeur de texte favori et changer deux balises.
Convertir iPhone en iPad
- En haut du fichier, vous trouverez
targetRuntime="iOS.CocoaTouch
"
- Passer à
targetRuntime="iOS.CocoaTouch.iPad"
- Au bas du fichier, vous trouverez peut-être ceci
<simulatedScreenMetrics key="destination" type="retina4"/>
- Remplacer par
<simulatedScreenMetrics key="destination"/>
Le dernier point n'apparaîtra que si le fichier principal du storyboard est configuré pour l'écran 4" de l'iPhone.
Ce qui est important ici, c'est que si vous ne faites qu'ajouter l'iPhone 5 à un projet existant, vous n'avez besoin que de la première vérification pour remplacer la valeur par défaut et charger votre fichier storyboard spécial. Cela m'a littéralement évité d'avoir à agencer manuellement tous les objets en code pour l'iPhone 5.