iphone - sale - ios 12 fecha de lanzamiento
Entendiendo el cambio de orientaciĆ³n de la interfaz iOS 6 (3)
Acerca de preferredInterfaceOrientationForPresentation
preferredInterfaceOrientationForPresentation
nunca se llama porque este no es un controlador de vista "presentado". No hay "presentación" involucrada aquí.
"Presentado" y "presentación" no son algunos términos vagos que significan "aparece". Estos son términos técnicos precisos, lo que significa que este controlador de vista se pone en juego con la llamada presentViewController:animated:completion:
En otras palabras, este evento llega solo si esto es lo que solíamos llamar un controlador de vista "modal".
Bueno, tu controlador de vista no es un controlador de vista modal; no se pone en juego con presentViewController:animated:completion:
Por lo tanto, no hay una "presentación" involucrada, y por lo tanto, la preferredInterfaceOrientationForPresentation
por preferredInterfaceOrientationForPresentation
es irrelevante aquí
Estoy siendo muy explícito sobre esto porque estoy pensando que muchas personas se confundirán o engañarán de la misma manera que tú. Así que quizás esta nota les ayude.
Lanzamiento en el paisaje
En iOS 6, la clave "Orientaciones de interfaz admitidas" en su Info.plist se toma mucho más en serio que antes. La solución a su problema general de iniciar una orientación deseada es:
Asegúrese de que las "Orientaciones de interfaz admitidas" en su Lista de información enumere todas las orientaciones que su aplicación siempre podrá asumir.
Asegúrese de que la orientación de lanzamiento deseada esté primero dentro de las "Orientaciones de interfaz admitidas".
Eso es todo al respecto. De hecho, no debería tener que poner ningún código en el controlador de vista raíz para administrar la orientación inicial.
AGREGADO: veo que mi pregunta se ve a menudo sin votos positivos, por lo que decidí que ustedes no obtienen lo que buscan. Redirigiéndote a una pregunta que tiene una respuesta muy buena sobre cómo manejar los cambios de orientación en iOS6
Exigencias específicas a cambios de orientación: Rotación restringida.
Upvotes son bienvenidos :)
He creado un nuevo proyecto a partir de la plantilla de detalles maestros y trato de iniciarlo con orientación horizontal. Como ustedes saben
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
El método está en desuso y debemos utilizarlo.
- (NSUInteger)supportedInterfaceOrientations
y / o
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
Aquí está mi código:
- (NSUInteger)supportedInterfaceOrientations {
NSLog(@"supported called");
return UIInterfaceOrientationMaskAll;//Which is actually a default value
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
NSLog(@" preferred called");//This method is never called. WHY?
return UIInterfaceOrientationLandscapeRight;
}
Como puede ver, estoy intentando devolver la orientación horizontal en el método preferido, pero nunca se llama. estados de la documentación ps:
Discusión El sistema llama a este método cuando presenta el controlador de vista en pantalla completa. Implementas este método cuando tu controlador de vista admite dos o más orientaciones, pero el contenido aparece mejor en una de esas orientaciones.
Si su controlador de vista implementa este método, entonces, cuando se presenta, su vista se muestra en la orientación preferida (aunque luego se puede rotar a otra rotación admitida). Si no implementa este método, el sistema presenta el controlador de vista utilizando la orientación actual de la barra de estado.
Entonces, la pregunta es: ¿Por qué el método prefferredOrientation nunca se llama? ¿Y cómo debemos manejar diferentes orientaciones en diferentes controladores ?. ¡Gracias! PS no marca la pregunta como duplicada. He investigado todas las preguntas similares y no tienen respuesta para la mía.
Hay una respuesta muy simple: solo puede cambiar o corregir la orientación de la interfaz de un controlador de vista presentado modal. Si lo hace, es decir, con un Segue Modalmente Presente en el generador de Interfaz (o el método del controlador de navegación), puede definir las orientaciones permitidas con
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait; // for example else an addition of all allowed
}
Este evento no se activa cuando solo presiona un controlador de vista en el controlador de navegación ... así que: no tiene un botón de retroceso y necesita un
[self dismissViewControllerAnimated:YES completion: ^(void) {
}];
para cerrarla
Si desea iniciar la vista modal en modo horizontal, simplemente coloque este código en el controlador de vista presentado
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
UIInterfaceOrientation orient = [[UIApplication sharedApplication] statusBarOrientation];
if (UIInterfaceOrientationIsLandscape(orient)) {
return orient;
}
return UIInterfaceOrientationLandscapeLeft;
}
Luego, presente este controlador como de costumbre.
UIViewController *vc = [[UIViewController alloc] initWithNibName:nil bundle:nil];
[vc setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[vc setModalPresentationStyle:UIModalPresentationFullScreen];
[self.navigationController presentViewController:vc animated:YES completion:^{}];