Domanda

Sto usando questo codice nella DetailView.m di un'applicazione SplitView. Ora cambia l'orientamento si verificano solo quando il dispositivo viene ruotato. La rilevazione non avviene quando viene lanciata l'applicazione. Inoltre ottengo questo avvertimento

Attenzione: 'RootViewController' non può rispondere a '-adjustViewsForOrientation:'

Quale cambiamento ho bisogno per rendere l'applicazione regolare il codice di orientamento all'avvio dell'applicazione.

> - (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);
>         
>     } }
È stato utile?

Soluzione

Per rimuovere l'avviso, spostare la definizione di -adjustViewsForOrientation: prima -willRotateToInterfaceOrientation:….

Il metodo -willRotateToInterfaceOrientation:… sarà chiamato solo quando c'è una rotazione di interfaccia. Quando l'applicazione è stata lanciata, l'interfaccia non ruota (segue l'orientamento iniziale), quindi questa chiamata non viene generato. Bisogna chiamare manualmente, per esempio in -viewDidLoad:

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

Altri suggerimenti

È necessario dichiarare il metodo in RootViewController.h, in questo modo:

- (void) adjustViewsForOrientation:(UIInterfaceOrientation)orientation;

In caso contrario, si otterrà l'avvertimento. Per assicurarsi che il proprio vista ruota quando i lanci di app, aggiungere una chiamata a adjustViewsForOrientation nella tua classe AppDelegate nel metodo applicationDidFinishLaunching.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top