Problemi con l'interfaccia di orientamento e UITabBarController
-
26-09-2019 - |
Domanda
problema rapida:
Ho un UITabBarController con 2 controller di navigazione [lascia chiamarli sinistra e destra del controller]
Al di default selezionato lasciata regolatore che può spingere un nuovo View Controller che rileva l'orientamento di interfaccia.
Nel controller destro che può spingere lo stesso View Controller, ma non in grado di rilevare l'orientamento di interfaccia, o per quella materia, non sarà nemmeno andare al metodo shouldAutoRotateInterface affatto T ___ T
Haaalp !!
Se è di qualche rilevanza, la vista Contoller che sto spingendo l'uso della proprietà hidesBottomBarWhenPushed.
Soluzione
fa il tuo UITabBarController attuare la rotazione automatica? qualsiasi viewcontroller figlio che vuole implementare autorotate deve avere il suo genitore implementare AutoRotate.
Altri suggerimenti
Molto probabilmente questo è il problema:
controller barra delle schede supportano un ritratto orientamento per impostazione predefinita e non ruotare di un orientamento orizzontale meno che tutti i controller di vista radice supportano un tale orientamento . Quando un orientamento del dispositivo cambiamento avviene, il controller barra delle schede interroga la sua gamma di controller di vista. Se uno di loro non supporta l'orientamento, la barra delle schede Controller non cambia la sua orientamento.
La soluzione è eseguire l'override del metodo seguente su ogni controller della vista che conduce alla vista:
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation {
return YES;
}
Ad esempio, anziché utilizzare il UITabBarController
predefinito in IB, sostituirlo con la vostra sottoclasse che contiene solo il metodo di cui sopra.
Sono un po 'in ritardo alla festa su questo, ma mi sono imbattuto in un problema con autorotazione all'avvio per un'applicazione barra delle schede volevo sempre per l'esecuzione in ritratto.
plist del app ha le impostazioni necessarie sia per inizio e solo consentono modalità ritratto, e tutti i miei controller di vista permettono solo in modalità portrait. Eppure, quando ho iniziato l'applicazione tenendo il mio iPhone nel paesaggio, l'applicazione è iniziata nel ritratto, ma poi ruotato in orizzontale!
Invece di sottoclasse UITabBarController
, ho il metodo UITabBarController
di shouldAutorotateToInterfaceOrientation:
semplicemente overrode utilizzando una categoria di classe UITabBarController
. Ho incluso questo codice nella mia app delegato:
@implementation UITabBarController(UITabBarControllerCategory)
-(BOOL)shouldAutorotateToInterfaceOrientation:
(UIInterfaceOrientation)toInterfaceOrientation
{
return (toInterfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
funziona a meraviglia, ed è molto leggero.