es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo definir correctamente el marco de un UIViewController al presentarlo encima de otro controlador de vista?

Estoy presentando un UIViewController encima de otro view controller usando el siguiente código:

let realityKitViewController = RealityKitViewController(localModelPath: modelPath)
realityKitViewController.modalPresentationStyle = .overCurrentContext

// Ocultar el escáner de código QR
GAPP.tabbarCtrl.hideQrCodeScanner(withAnimation: true, completion: {
    topController.present(realityKitViewController, animated: true, completion: nil)
})

En viewDidLoad() del view controller presentado establezco la siguiente frame:

let tabbarHeight = GAPP.tabbarCtrl.getTabbarHeight() - self.view.safeAreaInsets.bottom
self.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height - tabbarHeight)

Sin embargo, cuando reviso la jerarquía de vistas, puedo ver que el UITransitionView y la UIView del view controller presentado todavía cubren toda la pantalla en lugar de tener la frame que configure en su viewDidLoad().

¿Cómo puedo hacer que el UITransitionView y la UIView del view controller presentado tengan la misma frame que configuré en el viewDidLoad() del view controller presentado?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que podría ser necesario ajustar el marco del contenedor de la vista en la que está el controlador de vista presentado. Intente agregar el siguiente código después de presentar el controlador de vista:

    if let presentedView = realityKitViewController.view.superview {
        presentedView.frame = CGRect(x: 0, y: 0, width: presentedView.frame.width, height: presentedView.frame.height - tabbarHeight)
    }
    

    Esto debería ajustar el marco del contenedor de la vista, lo que a su vez debería ajustar los marcos de UITransitionView y la vista de UIView del controlador de vista presentado.

Comments are closed.