Est-il possible de convertir le système de coordonnées après un changement d'orientation paysage?

StackOverflow https://stackoverflow.com/questions/896994

  •  23-08-2019
  •  | 
  •  

Question

Dans une application iPhone OS fonction de la vue, je change l'orientation de l'orientation portrait initiale à une orientation paysage (UIInterfaceOrientationLandscapeRight). Mais maintenant x, y origine (0,0) est dans la en bas à gauche coin (au lieu de la partie supérieure gauche habituelle) et chaque fois que je veux faire quelque chose qui implique les coordonnées, je dois RE- calculer pour compenser le nouveau système de coordonnées. J'ai aussi remarqué que mon point de vue dans le nouveau système de coordonnées ne se comportent pas normalement parfois. Alors, est-il un moyen de convertir une fois que le système de coordonnées, juste après avoir changer l'orientation, afin que je puisse continuer à penser de mes coordonnées comme ayant une origine dans le supérieur gauche coin?

Était-ce utile?

La solution

Si vous faites l'approche recommandée d'appliquer une transformation à votre point de vue principal afin de le faire pivoter:

UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
if (orientation == UIInterfaceOrientationLandscapeRight) 
{
    CGAffineTransform transform = primaryView.transform;

    // Use the status bar frame to determine the center point of the window's content area.
    CGRect statusBarFrame = [[UIApplication sharedApplication] statusBarFrame];
    CGRect bounds = CGRectMake(0, 0, statusBarFrame.size.height, statusBarFrame.origin.x);
    CGPoint center = CGPointMake(60.0, bounds.size.height / 2.0);

    // Set the center point of the view to the center point of the window's content area.
    primaryView.center = center;

    // Rotate the view 90 degrees around its new center point.
    transform = CGAffineTransformRotate(transform, (M_PI / 2.0));
    primaryView.transform = transform;
}   

puis tout subviews vous ajoutez à ce point de vue principal devraient utiliser le système de coordonnées standard. La transformation qui est appliqué à la vue principale se charge de faire tourner les coordonnées des sous-vues, ainsi. Cela fonctionne bien pour moi dans ma demande.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top