8
votes

Chargement d'un XIB différent pour l'iPhone 5

Mes applications a une fonctionnalité supplémentaire pour l'iPhone 5 et j'ai créé une classe distincte avec un .xib pour cela. Je souhaite détecter la hauteur de l'écran (sauf si elle est possible d'obtenir l'identifiant / modèle de périphérique) et chargez un contrôleur de visualisation différent en conséquence. J'ai essayé ceci:

- (IBAction)select:(id)sender {

CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHeight = screenRect.size.height;

if (screenHeight == 960) {

Selection *selectView =[[Selection alloc] initWithNibName:nil bundle:nil];
selectView.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:selectView animated:YES];

}

else {

    Selection_5 *selectView =[[Selection_5 alloc] initWithNibName:nil bundle:nil];
    selectView.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    [self presentModalViewController:selectView animated:YES];

}

}


2 commentaires

Oui, ça a fonctionné. J'ai utilisé Float ScreenHeight = [UISCREEN PRINCIENNESCREEN] .Bounds.Size.Height


Cela vous aident à résoudre ce problème Stackoverflow.com/questions/13275144/...


4 Réponses :


5
votes

Essayez http://github.com/erica/uidevice-extension/

[[Selection alloc] initWithNibName:@"here_is_nibname" bundle:nil];


3 commentaires

Merci, à l'aide de Float ScreenHeight = [UISCREEN Mainscreen] .bounds.Size.Height a travaillé.


En mode Paysage, je ne peux pas accueillir la largeur exacte de l'appareil, s'il vous plaît n'importe quel partage comment obtenir ...


Dans le paysage, vous devez comparer non pas avec la hauteur 568, mais avec une largeur 568.



8
votes

Premièrement, vous ne voulez pas vérifier par type de périphérique. Que se passerait-il sur les nouvelles touches iPod (qui ont l'écran de même taille) ou iPhone de la même taille.

Mais je pense que le problème ici est que vous recherchez la taille de l'écran en fonction du nombre actuel de pixels qui - bizarrement - n'est pas ce que vous voulez. N'oubliez pas que sur un écran de rétine, tout est "doublé". Dans l'interface utilisateur, vous utilisez la taille "normale" pour tout ce qui, dans ce cas, est la moitié du nombre de pixels.

En bref: Vérifiez une hauteur d'écran de 480 (normale) ou 568 (iPhone 5).


1 commentaires

Ah, j'ai enfin obtenu ce que le 568 faisait référence! J'utilise cela pour charger un XIB différent pour les appareils 4 ".



5
votes

Dans mon application, je dois charger un fichier .xib pour iPhone, iPhone5 / iPod Touch et iPad, c'est le code que j'utilise: xxx

espère que cela aide quelqu'un besoins:)


0 commentaires

3
votes

Si vous avez cette convention de dénomination xxx

, vous pouvez faire comme suit cette xxx


1 commentaires

Si la méthode NibnameForClass est placée comme une fonction statique dans une classe UTIL, elle pourrait être utilisée partout dans l'application. Je préfère cela sur la solution de Gmoges.