81 votes

IPhone / IPad: Comment obtenir la largeur de l'écran par programmation?

Bonjour, je me demande s’il existe un moyen d’obtenir la largeur par programmation.

Je cherche quelque chose d'assez général pour accueillir iphone 3gs, iphone 4, ipad. En outre, la largeur devrait changer selon que le périphérique est en mode portrait ou paysage (pour ipad).

Quelqu'un sait comment faire ça ?? Je cherche depuis un moment ... merci!

201voto

Alan Rogers Points 8400

Jetez un oeil à UIScreen.

par exemple.

CGFloat width = [UIScreen mainScreen].bounds.size.width;

Jetez un oeil à la applicationFrame propriété si vous ne voulez pas que la barre d'état inclus (n'affecte pas la largeur).

Mise à JOUR: Il s'avère UIScreen (limites ou -applicationFrame) ne prend pas en compte l'interface en cours d'orientation. Un plus bonne méthode serait de demander à votre UIView de ses limites, en supposant que ce UIView a été auto-rotation par elle-Vue-contrôleur.

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    CGFloat width = CGRectGetWidth(self.view.bounds);
}

Si l'affichage n'est pas auto-rotation par la Vue du Contrôleur, alors vous aurez besoin de vérifier l'interface d'orientation pour déterminer quelle partie de la vue des limites est la "largeur" et "hauteur". Notez que le cadre de la propriété vous donnera le rectangle de la vue dans la UIWindow de coordonnées de l'espace (par défaut) ne pas être prise de l'interface d'orientation en compte.

6voto

Michael G. Emmons Points 16681

Cela peut être fait en 3 lignes de code :

 // grab the window frame and adjust it for orientation
UIView *rootView = [[[UIApplication sharedApplication] keyWindow] 
                                   rootViewController].view;
CGRect originalFrame = [[UIScreen mainScreen] bounds];
CGRect adjustedFrame = [rootView convertRect:originalFrame fromView:nil];
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X