Tengo UIImageView
en el self.view
(la vista principal) y en su interior hay un UIButton
. Quiero saber cuál es el marco de UIButton
en self.view
no en UIImageView
.¿Cómo obtener el marco de una vista dentro de otra vista?
Respuesta
supongo que busca este método
// Swift
let frame = imageView.convert(button.frame, to: self.view)
// Objective-C
CGRect frame = [imageView convertRect:button.frame toView:self.view];
¿Algo como esto? podría estar totalmente equivocado, a fuerza de verdad a través de thinkt; p
CGRect frame = CGRectMake((self.view.frame.origin.x-imageview.frame.origin.x) +btn.frame.origin.x,
(self.view.frame.origin.y.imageview.frame.origin.y)+btn.frame.origin.y,
btn.frame.size.width,
btn.frame.size.height);
No sé si tener manera más fácil.
Hay cuatro UIView
métodos que pueden ayudarle, convirtiendo CGPoints
y CGRects
de un UIView
de coordenadas de referencia a otro:
– convertPoint:toView:
– convertPoint:fromView:
– convertRect:toView:
– convertRect:fromView:
para que pueda probar
CGRect f = [imageView convertRect:button.frame toView:self.view];
o
CGRect f = [self.view convertRect:button.frame fromView:imageView];
Swift 3
Puede convertir el marco del botón para el sistema de coordenadas del punto de vista con esto:
self.view.convert(myButton.frame, from: myButton.superview)
Asegúrese de poner su lógica dentro de viewDidLayoutSubviews
y no viewDidLoad
. Las operaciones relacionadas con la geometría deben realizarse después de que se hayan presentado las subvistas, de lo contrario, es posible que no funcionen correctamente.
class ViewController: UIViewController {
@IBOutlet weak var myImageView: UIImageView!
@IBOutlet weak var myButton: UIButton!
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let buttonFrame = self.view.convert(myButton.frame, from: myButton.superview)
}
}
Usted sólo puede hacer referencia a myButton.superview
en lugar de myImageView
al convertir el marco.
Aquí hay más opciones para convertir un CGPoint
o CGRect
.
self.view.convert(point: CGPoint, from: UICoordinateSpace)
self.view.convert(point: CGPoint, from: UIView)
self.view.convert(rect: CGRect, from: UICoordinateSpace)
self.view.convert(rect: CGRect, from: UIView)
self.view.convert(point: CGPoint, to: UICoordinateSpace)
self.view.convert(point: CGPoint, to: UIView)
self.view.convert(rect: CGRect, to: UICoordinateSpace)
self.view.convert(rect: CGRect, to: UIView)
Véase el Apple Developer Docs para más información sobre la conversión de un CGPoint
o CGRect
.
- 1. ¿Se puede cargar una vista dividida dentro de la vista de detalle de otra vista dividida?
- 2. Django, mostrando una vista en otra vista?
- 3. Cómo agregar una vista detrás de otra vista en iOS
- 4. ¿Cómo navegar de una vista a otra vista usando UIPageControl?
- 5. Incrustar una vista web en otra vista
- 6. ¿Puedo llamar una vista desde otra vista?
- 7. Vista del centro debajo de otra Vista
- 8. mvc3 incrusta una vista parcial dentro de otra
- 9. runOnUiThread dentro de una vista
- 10. ember.js cambio de una vista desde otra vista
- 11. Android RelativeLayout alinear el centro de una vista en la esquina superior derecha de otra vista
- 12. detectar contacto en una vista detrás de otra vista?
- 13. Cómo animar una vista para ocultarla debajo de otra vista y luego animar desde esa vista
- 14. Desplazar vista web dentro de una vista de desplazamiento
- 15. Cómo ordenar dentro de una vista sql
- 16. otra vista en Pyramid
- 17. Android: ¿conseguir niños dentro de una vista?
- 18. Actualizar una vista parcial desde otra vista parcial - ASP.NET MVC2
- 19. Obtener el margen de una vista
- 20. crear una vista mediante programación con el marco establecido en el marco de Superview?
- 21. cómo cargar la vista en otra vista codeigniter 2.1?
- 22. ¿Cómo puedo mostrar una vista como una superposición de otra?
- 23. ¿Cómo ubicar el contexto dentro de una vista personalizada?
- 24. Cómo obtener una vista previa de las imágenes de R.drawable. *
- 25. ¿Cómo agregar vista superpuesta sobre otra vista en android?
- 26. android - alinear una vista de texto en el centro de otra vista
- 27. ¿Cómo incrustar una vista de UIViewController desde un xib dentro de una vista en otro xib?
- 28. Cómo obtener el ID de ruta actual dentro de una Vista desde la URL (ASP.NET MVC)
- 29. Ocultando una vista en el Administrador de regiones, cuando se muestra otra vista
- 30. Android: tener una vista arbitraria de la vista debajo de otra vista como el teclado del software