plus - no quiero que la pantalla de mi iphone 7 gire
No se puede girar la orientación de la interfaz al retrato al revés (3)
Tanto en el simulador de iPhone como en el iPhone 3GS (iOS 6) no puedo configurar la orientación del retrato al revés. Solo tengo un ViewController. He agregado este código:
-(BOOL) shouldAutorotate{
return YES;
}
-(UIInterfaceOrientation) preferredInterfaceOrientationForPresentation{
return UIInterfaceOrientationPortraitUpsideDown;
}
- (NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationPortrait | UIInterfaceOrientationPortraitUpsideDown;
}
-(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{
if (toInterfaceOrientation==UIInterfaceOrientationPortrait || toInterfaceOrientation==UIInterfaceOrientationPortraitUpsideDown) {
return YES;
}
return NO;
}
También agregué esto a AppDelegate.m:
-(NSUInteger) application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
return UIInterfaceOrientationPortrait | UIInterfaceOrientationPortraitUpsideDown;
}
También revisé el archivo plist, ambas orientaciones están presentes allí. En mi guión gráfico, en Simulated Metrics Orientation está establecido en Inferred. No hago nada en mi aplicaciónDidFinishLaunchingWithOptions, excepto que devuelvo SÍ. Acabo de agregar un UIImageView dentro de este ViewController. ¿Es posible hacer que esta orientación funcione?
Sé que hay una respuesta que funcionó, pero para cualquier otra persona que todavía esté atrapada en el mismo problema:
Tuve un problema similar que estaba conectado a Xcode: las rotaciones de retrato no se soportaban a pesar de devolver YES
a - (BOOL) shouldAutorotateToInterfaceOrientation:
para todos los casos. Resultó ser las ''Orientaciones de interfaz admitidas'' habilitadas en la ventana de resumen del editor de proyectos de mi objetivo:
Las selecciones anteriores de ''Info de Deployment de iPhone / iPad'' no lo hacían, era la sección ''Deployment Info'' del iPad que parece controlar lo que hará el simulador a pesar del hecho de que solo estaba usando el sim de iPhone. Una vez que habilité las mismas orientaciones en esa sección, la simulación de iPhone funcionó y pude probar lo que sucedió cuando se hizo girar el simulador ...
supportedInterfaceOrientations
devuelve un NSUInteger
. Devuelve todas las orientaciones de interfaz compatibles con el controlador de vista, una máscara de valores de orientación de interfaz.
UIInterfaceOrientationMask
devolver los valores definidos en UIInterfaceOrientationMask
Enum, como se muestra a continuación:
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown);
}
Intenté de muchas maneras para esto. Parece que solo funciona de una manera, pero globalmente a través de la aplicación, no solo para un controlador de vista particular.
En primer lugar, debe verificar al revés de la orientación del dispositivo en la configuración general del objetivo.
Luego, en la extensión del controlador de navegación, anula el método supportedInterfaceOrientations
extension UINavigationController {
override public func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return .All
}
}