paesaggio Strano avvio UITabBarController Application
-
16-09-2019 - |
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?
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.
Altri suggerimenti
forse questo può aiutare http://www.dejoware.com/blogpages/files/iphone_programming_landscape_view_tutorial.html