Nascondi un UITabBar quando cambia l'orientamento
-
10-07-2019 - |
Domanda
Ho una domanda abbastanza semplice ma la risposta non è così semplice.
Voglio nascondere un UITabBar quando il mio orientamento cambia.
Ho guardato in 2 modi:
Modo frame
myAppDelegate.tabBarController.tabBar.frame = CGRectMake(<<bottomOfScreen>>);
Funziona bene ma ho un'area vuota, quindi ho provato a giocare con tabBarController.view.frame e myViewController.view.frame ma non ho ottenuto alcun buon risultato.
Modo controller di navigazione
myOtherVC.hideTabBarWhenPushed = YES;
[self.navigationController pushViewController:myOtherVC animated:NO];
Funziona ma non è una buona soluzione per la mia app
Aggiornamento:
[appDelegate.tabBarController.view removeFromSuperview];
[self.view removeFromSuperview]; [appDelegate.window addSubview:self.view];
self.view.frame = CGRectMake(0,0,480,320);
Funziona bene ma non si autorotera più (e, naturalmente, non ho cambiato il metodo automatico e restituisce sempre SÌ)
Come posso nascondere la mia tabBar e fare in modo che la vista corrente prenda il suo spazio?
Grazie
Soluzione
È possibile utilizzare la soluzione corrente combinata con:
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];
per rilevare la rotazione. (Penso che tu combini questo con view.transform = CGAffineTransformMakeRotation per farlo ruotare ...?)
Altri suggerimenti
Due modi in cui penso che puoi farlo facilmente sarebbero:
- per ricaricare nuovamente gli oggetti nel controller tabBar - con hidesBottomBarWhenPushed impostato su YES per i viewController che si desidera nascondere.
- L'altra opzione sarebbe quella di rendere la tua vista l'unica vista per la finestra quando il telefono viene ruotato e quindi rimettere tabBarController.view nella finestra quando il telefono viene ruotato indietro
Spero che questo aiuti