Dans mon iPhone OS application que j'ai envie (besoin) pour surveiller les changements dans l'orientation du périphérique afin de réorganiser certaines parties de l'écran. L'approche que j'ai utilisée était d'utiliser CGRect frame = [UIScreen mainScreen].applicationFrame
pour obtenir la taille de l'écran, et à partir de là calculer la taille et / ou le positionnement d'autres contrôles (j'ai aussi essayé d' self.view.frame
).
Tous les tests ont été fait jusqu'à présent en mode Portrait, de sorte que je puisse me concentrer sur la programmation, les principales caractéristiques et, plus tard, il suffit de faire quelques ajustements pour le Paysage. Et ici, entre le problème: En -(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
j'ai ajouté un peu de journalisation pour vérifier la taille avant de procéder, mais apparemment, les valeurs pour la Largeur et la Hauteur sont du "mauvais" (je dis "mauvais" car, au premier coup d'œil les valeurs ne fait pas de sens pour moi).
Voici la sortie de l'abattage:
- Rotation: Paysage [w=300.000000, h=480.000000]
- Rotation: Portrait [w=320.000000, h=460.000000]
Les valeurs de "w" et "h" dans le Paysage semblent inversées pour moi - je m'attendais à ce que w=480 et h=300.
Ce que je fais mal? Le code que j'ai utilisé pour le débogage est ci-dessous.
-(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
CGRect frame = [UIScreen mainScreen].applicationFrame;
CGSize size = frame.size;
NSLog(@"%@", [NSString stringWithFormat:@"Rotation: %s [w=%f, h=%f]",
UIInterfaceOrientationIsPortrait(self.interfaceOrientation) ? "Portrait" : "Landscape",
size.width, size.height]);
}