[Objective C] Détecter automatiquement un iPhone 5 ?
Si votre projet utilise des fichiers XIB indépendants et que vous ne souhaitez pas utiliser la fonction Autolayout d’xCode (qui crée plus de soucis qu’autre chose) vous aurez besoin de connaitre le modéle précis du device utilisant votre application pour pouovir différencier un iPhone 5 d’un iPhone 4 et afficher la bonne vue au bon moment (ou autre).
Or, dans sa grande bonté, Apple n’a pas créé de sous ressources pour déterminer l’identifiant du modéle et un appel de la classe UIDevice model (voir ici) vous retournera toujours iPhone sans précision de la version ni du modéle (d’autres classe existent, par contre pour la version de l’OS mais ce n’est pas le propos)
Par ailleurs, vous pourriez avoir besoin de connaitre précisément la résolution de l’écran du device utilisant votre application si, comme moi, vous travaillez sur une application un tantinet capricieuse au niveau de l’affichage et demandant une vraie précision :)
Bref, le code suivant peut vous aider :
https://github.com/malcommac/iOSUtilities/tree/main/UIDevice+Resolutions
Pour l’utiliser il vous suffit de créer les 2 fichiers (.h et .m) et de les intégrer a la racine de votre application.
Ensuite, dans votre fichier .m (le Appdelegate par exemple) il vous suffit de rajouter :
#import “UIDevice+Resolutions.h”
Puis, dans didFinishLaunchingWithOptions: (par exemple, mais vous pouvez le mettre dans n’importe quelle fonction) :
if ([UIDevice currentResolution] == UIDevice_iPhoneTallerHiRes)
{
NSLog(@”iPhone 5 detected”);
}
A vous ensuite de remplacer ce NSLOG par ce que vous voulez. Vous pouvez de la sorte tester tous les iDevices iPhones et iPad.
Voila :)
#Labise
