¿Es posible girar UIAlertController (y Alert) en orientación horizontal?

Estoy editando una aplicación donde agregué un nuevo UIViewController para configurar un juego multijugador en un layout.

Agregué dos botones para cada jugador (button superior, button bot). Cada button genera una alerta en la pantalla (recuerde que está en orientación horizontal), pero el problema es que el jugador 2 no ve la alerta rotada, es decir, se supone que la alerta se muestra en su orientación, delante de mí.

¿Como hay alguna forma de hacer esto? Quiero rotar una Alerta para el jugador 2 no verá la información de la alerta girada.

Aquí el código de alerta que tengo:

@IBAction func ShowAlert(){ let message = "Test" let alert = UIAlertController(title: title, message: message, prefernetworkingStyle: .Alert) let action = UIAlertAction(title: "OK", style: .Default, handler: nil) alert.addAction(action) presentViewController(alert, animated: true, completion: nil) } 

Aquí hay una forma de girar una vista del controller de alerta, aunque no es perfecta. El controller intenta presentar basado en la orientación y encontré que intentar transformarlo antes de que se presente no tiene éxito.

Para no ver inicialmente la orientación "incorrecta", debe establecer la alerta en hidden y luego hacerla visible una vez que esté "presentada".

 let alert // setup alert.view.hidden = true; [self presentViewController:c animated:YES completion:^{ alert.view.transform = CGAffineTransformMakeRotation(M_PI); alert.view.hidden = false; }]; 

El único problema pendiente que tengo con esto es que después de que el usuario interactúa con la alerta, vuelve a la transformación inicial (depende de la orientación). Actualmente no he encontrado una solución para esto, pero actualizaré si alguna vez lo hago.


Alternativamente, el uso de una "alerta" personalizada resolvería este problema, ya que tendría más control sobre su vista. Este es probablemente el enfoque más confiable.

Esta es mi solucion presentViewController sin animation para evitar el flash cuando se presente el controller de alerta.

 [self presentViewController:alert animated:NO completion:^{ [alertController.view setTransform: CGAffineTransformMakeRotation(M_PI_2)]; }]; 

a continuación, cree una categoría UIAlertController denominada, por ejemplo, UIAlertController+Orientation , oculte la vista en la vista viewWillDisappear para evitar el retorno del flash cuando se desestime el controller de alerta.

 #import "UIAlertController+Orientation.h" @implementation UIAlertController (Orientation) - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; [self.view setHidden:YES]; } - (BOOL) shouldAutorotate { return NO; } @end