¿Hay un método no desaprobado que coincida con didRotateFromInterfaceOrientation

Estoy tratando de encontrar una llamada de método en la que pueda engancharme una vez que la orientación de un dispositivo ha cambiado. ¿Hay algo idéntico a didRotateFromInterfaceOrientation que no está en desuso?

A partir de iOS 8, todos los UIViewControllers henetworkingan el protocolo UIContentContainer, uno de cuyos methods es - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator>)coordinator , que puede anular (simplificar) de esta forma:

 - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator>)coordinator { [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; [coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) { // Stuff you used to do in willRotateToInterfaceOrientation would go here. // If you don't need anything special, you can set this block to nil. } completion:^(id<UIViewControllerTransitionCoordinatorContext> context) { // Stuff you used to do in didRotateFromInterfaceOrientation would go here. // If not needed, set to nil. }]; } 

Notarás que no hay nada específico acerca de la orientación, que es por layout; Las rotaciones de vista de iOS son esencialmente una composition de una operación de matriz de traducción específica (cambiar el tamaño de una vista de una relación de aspecto a otra es solo un caso específico de una operación de cambio de tamaño general donde los tamaños de vista de origen y destino se conocen de antemano) (que es manejado por el sistema operativo).

Siempre puede registrarse para la UIDeviceOrientationDidChangeNotification

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:UIDeviceOrientationDidChangeNotification object:nil]; - (void) didRotate:(id)sender { UIInterfaceOrientation io = [[UIApplication shanetworkingApplication] statusBarOrientation]; ... 

Versión Swift 3 de la respuesta de fullofsquirrels:

 override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { coordinator.animate(alongsideTransition: { context in context.viewController(forKey: UITransitionContextViewControllerKey.from) // Stuff you used to do in willRotateToInterfaceOrientation would go here. // If you don't need anything special, you can set this block to nil. }, completion: { context in // Stuff you used to do in didRotateFromInterfaceOrientation would go here. // If not needed, set to nil. }) }