¿Hay una manera de convertir el sistema de coordenadas después de un cambio de orientación horizontal?

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

  •  23-08-2019
  •  | 
  •  

Pregunta

En una aplicación iPhone sistema operativo basado en vista, cambiar la orientación de la orientación inicial retrato a un orientación horizontal (UIInterfaceOrientationLandscapeRight). Pero ahora la x, origen y (0,0) está en el inferior izquierda esquina (en lugar del habitual superior izquierda) y cada vez que quiero hacer algo que implica que deberá volver a coordenadas calcular para compensar el nuevo sistema de coordenadas. También he notado que mis puntos de vista dentro del nuevo sistema de coordenadas no se comportan normalmente a veces. Entonces, ¿hay una manera de convertir el sistema de coordenadas ONCE, justo después de cambiar la orientación, de modo que pueda seguir pensando en mis coordenadas que tienen un origen en el esquina superior izquierda?

¿Fue útil?

Solución

Si lo hace el método recomendado de aplicar una transformación para su vista principal con el fin de girarlo:

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;
}   

entonces cualquier subvistas añada a esta vista principal deben utilizar el sistema de coordenadas estándar. La transformación que se aplica a la vista principal se encarga de hacer girar las coordenadas de los subvistas, también. Esto funciona bien para mí en mi aplicación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top