Domanda

La mia domanda è abbastanza semplice, ma ho alcuni problemi quando si inizia. Ho incastonato nella Info.plist da paesaggistico, ma sembra ignorare l'ordine. Infatti, quando l'applicazione sta caricando il simulatore è il terreno, ma poi si ritorna in modalità verticale.

Questa è la gerarchia delle viste e controller:

  • MainViewController (si estende UITabBarController solo per eseguire l'override shouldAutorotateToInterfaceOrientation :)
    • Tre UITableViewControllers estesi come schede (anche quelli hanno la shouldAutorotateToInterfaceOrientation impostato correttamente).

Se ho un pò forzare l'orientamento del dispositivo da Paesaggio con:

[[UIDevice currentDevice] setOrientation: UIInterfaceOrientationLandscapeRight];

Poi per un attimo i flash Simulator in modalità verticale, e poi va paesaggistico. Il problema è che in questo modo, le animazioni di auto-rotazione viene avviato, che è qualcosa che non posso tollerate. Voglio solo una, applicazione paesaggistico fisso.

Degli indizi? Mi sto perdendo qualcosa?

È stato utile?

Soluzione

Prova quanto segue. Non certo perché non funziona per voi

1) impostare la chiave UIInterfaceOrientation
per UIInterfaceOrientationLandscapeRight nel file plist

2) sovrascrivere il metodo UITabBarController shouldAutorotateToInterfaceOrientation (); nel seguente codice si occupa solo con scheda zero e uno, e solo con un controller: se si dispone di un controller di navigazione e si desidera controllare diversi controller che possono essere sullo stack, è necessario modificare il codice di conseguenza

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    BOOL tabZeroController = [[[self.viewControllers objectAtIndex:0] visibleViewController] isKindOfClass:[YourTabZeroTableViewController class]];

    BOOL tabOneController = [[[self.viewControllers objectAtIndex:1] visibleViewController] isKindOfClass:[YourTabOneTableViewController class]];


    if(self.selectedIndex == 0 && tabZeroController)
        return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);

    if(self.selectedIndex == 1 && tabOneController)
        return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);

    return NO;

}

2) impostando

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

in applicationDidFinishLaunching del delegato () metodo è richiesto solo per il simulatore, non su un dispositivo

3) aggiungere il seguente shouldAutorotateToInterfaceOrientation (metodo) nel vostro controller

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{
   return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

4) eseguire l'applicazione sul dispositivo e verificare che funzioni correttamente utilizzando la voce di menu Hardware Ruota a sinistra e Ruota a destra. Si dovrebbe vedere il display in modalità landscape.

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