2011-05-18 4 views
1

J'ai une application universelle qui change la disposition de l'écran en fonction de l'appareil dont dispose l'utilisateur. Cela semble fonctionner plutôt bien, mais j'ai reçu un appel d'un utilisateur (et j'envoie des captures d'écran) de son iPhone 4 lui montrant la vue de l'iPad au lieu de l'affichage de l'iPhone. Je n'ai pas été en mesure de le dupliquer sur l'un des téléphones que nous avons ici, mais je me demande s'il existe une meilleure façon de le faire depuis iOS 4.3 est sorti.Une meilleure façon de détecter si isIpad?

+(BOOL)isIpad{ 
    return ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad); 
} 

Alternativement, existe-t-il un moyen de détecter la taille de l'écran? Je l'utilise principalement pour déterminer la largeur des éléments d'une table, mais si Apple sort avec l'iPad 3 avec écran rétine, il serait bien que l'application ajuste tout en conséquence.
Également utile si l'application est en mode portrait ou paysage. Faites en sorte qu'il ancre juste aux bords comme des éléments dans WPF.

Répondre

3

Lors du chargement XIBs pour une application universelle cela, ou ce que vous faites déjà, semble être la seule façon:

NSString *xibName = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)[email protected]"SomeView~iPad":@"SomeView"; 

En ce qui concerne la taille de l'écran cela devrait fonctionner:

CGRect screenSize = [[UIScreen mainScreen] bounds]; 
+0

Je vais donner la méthode UI_USER_INTERFACE_IDIOM() un essai. Je dois faire une mise à jour de toute façon, alors ça marche. De plus, une fois que l'utilisateur aura reçu la mise à jour, je saurai qu'il est sur la version actuelle. – AndyD273

+0

Il manquait '[' dans [[UIScreen mainScreen] limites]; 'J'ai essayé de le modifier, mais Stackoverflow insiste de nos jours sur le fait que les modifications doivent contenir au moins six caractères. La dernière fois que je perds du temps à essayer d'éditer quelque chose. – mxcl

+0

@MaxHowell Correction de l'édition ... On dirait que vous avez besoin de plus de réputation pour éditer un article avec moins de six caractères. – Macmade

0

Probablement il a une version précédente de l'application et le conflit avec le nouveau! Essayez de supprimer l'ancien et de réinstaller le nouveau! Ça marche! J'ai déjà rencontré ce problème.

1

C'est comme un bazillion ans, mais je suis tombé sur google alors je me suis dit que je posterais une fonctionnalité mal documentée mais très utile. Si vous ajoutez ~ ipad à la fin du nom de fichier pour votre nib spécifique à l'iPad, il sera automatiquement chargé à la place. Même logique que @ 2x pour le chargement des images. Donc, votre nib iPhone s'appellerait myview.xib et votre ipad myview ~ ipad.xib et iOS chargeront correctement la version ipad là où c'est nécessaire. Fantaisie!

1

UIUserInterfaceIdiomPad est maintenant obsolète. La nouvelle façon de le faire serait d'utiliser TraitCollections. Il ne peut être appelé que sur Views.

-(BOOL) isiPad{ 
    return self.view.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClassRegular && self.view.traitCollection.verticalSizeClass == UIUserInterfaceSizeClassRegular; 
} 

d'Apple Documentation Référez here

+1

Merci pour la mise à jour. Il est bon de garder les informations à jour, et je n'avais pas encore vu la documentation sur la méthode TraitCollections. – AndyD273

+0

Cela ne fonctionnera pas sur iPad mini –

Questions connexes