UIViewController no actualiza las restricciones de la vista cuando la orientación del dispositivo cambia

Estoy haciendo una aplicación donde el iPad se puede usar tanto en modo horizontal como vertical. La configuration de mi UIViewControllers es la siguiente:

Tengo un UIViewController con un UICollectionView que tiene las siguientes restricciones: superior, UICollectionView , posterior e inferior establecido en 0 con su supervisión (la supervisión es la UIView de mi UIViewController ).

Cuando UIViewController una celda, UIViewController otro UIViewController en UINavigationController que es un viewController de detalle de la celda. Sencillo.

Cuando cambio la orientación del dispositivo en el primer controller de vista, los límites de UICollectionView se configuran correctamente.

Aquí viene mi problema :

Si selecciono una celda en UICollectionView , se UICollectionView el segundo detalle viewController. Entonces, si en este segundo ViewController cambio la orientación del dispositivo y luego vuelvo al primer viewController, la vista de mi UIViewController no se ha girado. No sé por qué, intenté esto sin éxito:

self.view.layoutIfNeeded() en viewDidAppear() de my firstViewController para actualizar las restricciones según la orientación actual, no funcionó. Esto no funcionó porque noté una cosa:

La vista de marco de mi primer viewController sigue siendo la misma que la orientación anterior, no cambió … Pero si vuelvo a rotar el dispositivo, UIViewController detecta los cambios de orientación y los límites de la vista se configuran correctamente.

Entonces, mi problema es que cuando estoy en el segundo controller de vista y que estoy girando el dispositivo y luego vuelvo al controller de vista anterior, el controller anterior no ha detectado el cambio de orientación que acabo de hacer el segundo controller de vista.

Demostración de GIF:

introduzca la descripción de la imagen aquí

Después de eso, hice una rotation del modo de retrato al modo horizontal, la vista no se modifica, ya que la herramienta de jerarquía de vista de debugging aparece a continuación:

introduzca la descripción de la imagen aquí

La UIView todavía está en retrato, por lo que la restricción UICollectionView no se puede actualizar con la nueva orientación …

¿Algunas ideas?

    Resuelto restableciendo el marco de la vista en mi primer viewController con los límites de la pantalla en el método viewWillAppear :

     public override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(true) self.view.frame = UIScreen.main.bounds self.view.layoutIfNeeded() } 

    Así, la UIView principal de my viewController tiene el marco correcto, y las restricciones se pueden actualizar automáticamente cuando layoutIfNeeded() en mi UIView.