2009-06-24 14 views
7

Mam dość proste pytanie, ale odpowiedź nie jest taka łatwa.Ukryj pasek UITabBar, gdy zmiana orientacji

Chcę ukryć UITabBar, gdy zmieni się moja orientacja.

Spojrzałem 2 sposoby:

Rama sposób

myAppDelegate.tabBarController.tabBar.frame = CGRectMake(<<bottomOfScreen>>); 

działa dobrze, ale mam pusty obszar, więc starał się grać z tabBarController.view.frame et myViewController.view.frame ale Nie uzyskałem żadnego dobrego wyniku.

Navigation Controller Way

myOtherVC.hideTabBarWhenPushed = YES; 
[self.navigationController pushViewController:myOtherVC animated:NO]; 

działa, ale nie jest to dobre rozwiązanie dla mojego app

Aktualizacja:

[appDelegate.tabBarController.view removeFromSuperview]; 
[self.view removeFromSuperview]; [appDelegate.window addSubview:self.view]; 
self.view.frame = CGRectMake(0,0,480,320); 

działa dobrze, ale nie ma już AutoRotate (i oczywiście, nie zmieniłem shouldAutorotate i zawsze zwraca TAK)


Jak mogę ukryć mój tabbar i sprawić, by bieżący widok zajmował jego miejsce?


Dzięki

+0

Czy wiesz, jak to zrobić? Jeśli tak, czy możesz podzielić się odpowiedzią? –

+0

Tak, właśnie wysłałem odpowiedź – Francescu

Odpowiedz

3

można wykorzystywać obecne rozwiązanie w połączeniu z:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:@"UIDeviceOrientationDidChangeNotification" object:nil]; 

wykrywać obrót. (Myślę, że łączysz to z view.transform = CGAffineTransformMakeRotation, aby go obrócić ...?)

0

Dwa sposoby myślę, że można łatwo zrobić to byłoby:

  1. przeładować obiekty z powrotem do kontrolera umieszczenie zakładek - z hidesBottomBarWhenPushed ustawiona na TAK dla viewControllers chcesz być ukryty.
  2. Innym rozwiązaniem byłoby po prostu zrobić twój widok tylko widok dla okna, gdy telefon jest obracany, a następnie umieścić tabBarController.view powrotem w oknie, gdy telefon jest obracany z powrotem

Nadzieja to pomaga

+0

Cześć, dziękuję za pomoc. Grałem z widokami: [appDelegate.tabBarController.view removeFromSuperview]; [self.view removeFromSuperview]; [appDelegate.window addSubview: self.view]; self.view.frame = CGRectMake (0,0,480,320); Działa dobrze, ale już nie autorotuje (i oczywiście, nie zmieniłem metody shouldAutorotate i zawsze zwraca TAK) – Francescu