2011-06-23 19 views
33

Tengo una vista que se crea en modo horizontal (mucho después de la rotación, etc.).
En esta vista, quiero encontrar un punto relativo a la ventana principal.
El siguiente código funciona en modo vertical, pero en landscappe sigue devolviendo los valores como si estuviera en vertical.convertPoint: toView: en el modo horizontal que proporciona valores erróneos

CGPoint ptRelativeToWindow = [self convertPoint:self.bounds.origin toView:nil]; 

Resuelto

Esto resolvió el problema y da las coordenadas de la derecha:

[self convertPoint:self.bounds.origin toView:[UIApplication sharedApplication].keyWindow.rootViewController.view]; 
+0

¿Alguna manera particular de reproducir este error? Probé tu código y devolvió los valores correctamente. –

+0

En iOS6, su 'solución' usa nuevamente la vista de retrato. –

+0

La solución funciona en iOS7, gracias. –

Respuesta

15

No se puede utilizar la ventana principal para calcular las coordenadas relativas. La ventana principal recibe eventos de rotación y los pasa a los controladores, lo que significa que no cambia el tamaño en sí (siempre tiene los mismos límites de retrato). Es por eso que la solución que encontró tiene sentido: encuentra las coordenadas relativas a la vista del controlador raíz que sí recibe los eventos de rotación y cambia su tamaño en consecuencia

Cuestiones relacionadas