Ausblenden eines UITabBar wenn Orientierungsänderung
-
10-07-2019 - |
Frage
Ich habe eine ganz einfache Frage, aber die Antwort ist nicht so einfach.
Ich möchte eine UITabBar wenn meine Orientierungsänderung verbergen.
Ich sah zwei Möglichkeiten:
Rahmen Art und Weise
myAppDelegate.tabBarController.tabBar.frame = CGRectMake(<<bottomOfScreen>>);
funktioniert gut, aber ich habe einen leeren Bereich, so versucht, mit tabBarController.view.frame et myViewController.view.frame zu spielen, aber ich habe kein gutes Ergebnis.
Navigation Controller Way
myOtherVC.hideTabBarWhenPushed = YES;
[self.navigationController pushViewController:myOtherVC animated:NO];
Works ist aber keine gute Lösung für meine app
Update:
[appDelegate.tabBarController.view removeFromSuperview];
[self.view removeFromSuperview]; [appDelegate.window addSubview:self.view];
self.view.frame = CGRectMake(0,0,480,320);
funktioniert gut, aber autorotate nicht mehr (und natürlich, ich habe nicht die shouldAutorotate ändern und es gibt immer JA)
Wie kann ich meine tabBar HIDDE und die aktuelle Ansicht unter seinen Platz machen?
Danke
Lösung
Sie können die aktuelle Lösung verwenden, kombiniert mit:
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];
erkennen Rotation. (Ich glaube, dass Sie dies mit view.transform kombinieren = CGAffineTransformMakeRotation zu machen, drehen ...?)
Andere Tipps
Zwei Möglichkeiten, wie ich glaube, Sie leicht tun können, dies wäre:
- die Objekte wieder in den tabBar Controller neu geladen werden - mit der YES für die Viewcontrollers eingestellt hidesBottomBarWhenPushed Sie versteckt werden soll.
- Die andere Möglichkeit wäre, nur Ihre Sicht die einzige Ansicht für das Fenster, wenn das Telefon gedreht wird und dann die tabBarController.view zurück in dem Fenster gesetzt, wenn das Telefon zurück gedreht wird,
Hope, das hilft