Pregunta

Estoy utilizando este código en el DetailView.m de una aplicación SplitView. Ahora los cambios de orientación se producen sólo cuando se hace girar el dispositivo. La detección no se produce cuando se inicia la aplicación. También consigo esta advertencia

Advertencia: 'RootViewController' pueden no responder a '-adjustViewsForOrientation:'

¿Qué cambios necesito hacer la aplicación ajustar el código de orientación cuando se inicia la aplicación.

> - (void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
> duration:(NSTimeInterval)duration {
>     [self adjustViewsForOrientation:toInterfaceOrientation];
> }
> 
> - (void) adjustViewsForOrientation:(UIInterfaceOrientation)orientation
> {
>     if (orientation == UIInterfaceOrientationLandscapeLeft ||
> orientation ==
> UIInterfaceOrientationLandscapeRight)
> {
>         detailDescriptionLabel.center = CGPointMake(235.0f, 42.0f);
>         bigthumbImageView.center = CGPointMake(355.0f, 70.0f);
>         
>     }
>     else if (orientation == UIInterfaceOrientationPortrait ||
> orientation ==
> UIInterfaceOrientationPortraitUpsideDown)
> {
>         detailDescriptionLabel.center = CGPointMake(160.0f, 52.0f);
>         bigthumbImageView.center = CGPointMake(275.0f, 80.0f);
>         
>     } }
¿Fue útil?

Solución

Para eliminar la advertencia, mueva la definición de -adjustViewsForOrientation: antes -willRotateToInterfaceOrientation:….

El método -willRotateToInterfaceOrientation:… sólo se llama cuando hay una rotación de interfaz. Cuando se puso en marcha primero la aplicación, la interfaz no gira (se sigue la orientación inicial), así que no se genera esta llamada. Tienes que llamar de forma manual, por ejemplo, en -viewDidLoad:

-(void)viewDidLoad {
   [self adjustViewsForOrientation:self.interfaceOrientation];
}

Otros consejos

Es necesario declarar su método en el RootViewController.h, así:

- (void) adjustViewsForOrientation:(UIInterfaceOrientation)orientation;

De lo contrario obtendrá la advertencia. Para asegurarse de que su punto de vista gira cuando se lance la aplicación, añadir una llamada a adjustViewsForOrientation en su clase en el método AppDelegate applicationDidFinishLaunching.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top