Deseo obtener el origen de scrollView en el sistema de coordenadas de la ventana. Por ejemplo, actualmente, el origen de scollView es (0,51). Pero en el sistema de coordenadas de ventana debe ser 51 + 44 (altura de la barra de navegación) +20 (altura de la barra de estado) = 115. Significa en el sistema de coordenadas de la ventana que scrollView.frame.origin debe ser (0,115). Intenté con convertPoint: métodos pero obteniendo (0,51) o (0,0) algunas veces. Por favor proporciona una solución a esto. GraciasConvierta un punto de origen UIView en su sistema de coordenadas de ventana
Respuesta
He intentado con la solución TechZen pero fue en vano. En lugar de convertir el origen de scrollView, me referí a apple docs UIWindow class Reference y convertí el endCenter del teclado al sistema de coordenadas de mi vista utilizando este código [self.view convertPoint:endCentre fromView:[UIApplication sharedApplication].keyWindow]
. Este pedazo de código funcionó y por lo tanto resolvió mi problema. Sin embargo, todavía queda la pregunta de por qué no da la coordenada correcta de scrollView.origin.So, básicamente tengo una solución al convertir el teclado endcenter en lugar de scrollView.origin. Ah, y estaba haciendo todo esto para calcular la nueva altura de scrollView cuando aparece el teclado en la pantalla. Entonces, si alguien tiene una solución a este problema o una solución mejor, por favor avísanos.
Parece que no está convirtiendo entre las vistas adecuadas. marco de un punto de vista se establece en las coordenadas de su supervista, no sus propias coordenadas internas, por lo que si estuviera tratando de convertir el origen de un objeto de coordenadas de la ventana, lo que tendría que utilizar el supervista:
[[self superview] convertPoint:self.frame.origin toView:theWindow];
Sin embargo , es incluso más simple convertir el punto cero de la vista a la ventana. Las dos piezas de código son equivalentes, por lo que no es necesario utilizar el origen en absoluto.
[self convertPoint:CGPointZero toView:theWindow];
I intenté esta pieza de código de código en el método viewDidLoad, con uno mismo reemplazado por self.view y theWindow reemplazado por self.view.window, pero está dando (0,0) como la salida – Nishit
Verificaría que la propiedad de la ventana de la vista no es nada A menudo lo es – TechZen
Gracias por responder. Cómo lidiar con este problema Intenté reemplazar self.view.window con [UIApplication sharedApplication] .keywindow pero fue en vano. – Nishit
Tenga en cuenta que estas funciones solo funcionarán después de que el controlador de vista termine de preparar las subvistas. Así que si quieres que cuando las cargas de vista, se puede utilizar viewDidLayoutSubviews/viewDidAppear, pero no en viewDidLoad/viewWillAppear etc ...
Este código funcionó para mí:
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
CGPoint originInSuperview = [self.view.superview convertPoint:CGPointZero fromView:self.scrollView];
}
Swift 2.1:
En viewDidAppear (de lo contrario los elementos todavía no están en capas) de su ViewController:
var yourFrame = yourScrollView.convertRect(yourScrollView.frame, toView: self.view)
//PRINT THE WHOLE RECT
print(yourFrame)
//PRINT A DETAILED VERSION OF THE FRAME, ALSO CAN PERFORM CALCULATION BETWEEN THE RECT PARAMETERS TO GET , FOR EXAMPLE, WIDTH POINT IN THE SUPERVIEW:
print("X: \(yourFrame.origin.x) Y: \(yourFrame.origin.y) WIDTH: \(yourFrame.width) HEIGHT: \(yourFrame.height)")
En Swift 3: var yourFrame = yourScrollView.convertRect (yourScrollView.frame, to: self.view) – Medhi
- 1. Convierta las coordenadas entre UIView padre/hijo después de CGAffineTransform
- 2. Core Graphics sistema de coordenadas
- 3. Cómo obtener las coordenadas de un punto en un sistema de coordenadas según el ángulo y la distancia
- 4. Obtenga las coordenadas de un punto de mkmapview en iphone
- 5. Encontrar coordenadas de un punto en OpenLayers
- 6. Cómo rotar el sistema de coordenadas?
- 7. Cambio cuadrícula de coordenadas Sistema
- 8. Sistema de coordenadas Cocos2d
- 9. Convierta las coordenadas a un nombre de lugar
- 10. dispositivo Android Convertir sistema de "usuario" sistema de coordenadas
- 11. sistema de coordenadas giratorias a través de un cuaternión
- 12. iPhone: escalar UIView sobre un punto específico
- 13. ¿Cómo establecer una referencia de origen de UIView?
- 14. Obtener coordenadas de un punto en una carretera
- 15. poner subvistas de un UIView en frente de su CALayer?
- 16. sistema de coordenadas de iluminación por fragmento
- 17. Trazado de vectores en un sistema de coordenadas con R o python
- 18. ¿Cómo verificar si un punto (x, y) está dentro de un polígono en el sistema de coordenadas cartesianas?
- 19. ¿Cómo girar un icono de Android en su punto central?
- 20. Punto de referencia UIView drawRect: método
- 21. ¿Cómo se voltea el sistema de coordenadas de un NSView?
- 22. Calcular la distancia en el Sistema de coordenadas cartesianas en Mathematica
- 23. Coordenadas GPS: 1km cuadrados alrededor de un punto
- 24. ¿Cómo poner punto de corte en clase sin tener su origen?
- 25. ¿Encontrar coordenadas de un punto entre dos puntos?
- 26. Convierta un identificador de ventana IntPtr a IWin32Window^
- 27. Cómo configurar QGraphicsScene/View a un sistema de coordenadas específico
- 28. (Escala) Zoom en una UIView en un punto
- 29. gnuplot: Trazado de coordenadas X, Y y su etiqueta
- 30. Convertir NSPoint en coordenadas de pantalla a la ventana de coordenadas
versión Swift abajo –