2013-03-08 20 views
24

Mam viewcontroller że wdrożenie UITabbarViewController i chcę, aby ukryć pasek kart i zastąpić ją przez siebie,iOS TabbarViewController ukryć pasek kart

self.tabBar.hidden = YES; 

pasku kart zniknął, ale jest pusty obszar (niebieski) na dole widoku. Nie chcę pustego obszaru, jak mogę to naprawić? Dziękuję Ci.

edit: niebieski obszar jest:

self.view.backgroundColor = [UIColor blueColor]; 
+0

Proszę sprawdzić http://stackoverflow.com/questions/1982172/iphone-is-it-possible-to-hide-the-tabbar/29619468#29619468 –

Odpowiedz

66

Zrobiliśmy dokładnie to samo w naszej aplikacji. Aby ukryć domyślne umieszczenie zakładek, po prostu zastąpić metodę hidesBottomBarWhenPushed w swojej macierzystej widoku kontrolera (lub w każdym kontrolerze widoku w aplikacji)

#pragma mark - Overriden UIViewController methods 
- (BOOL)hidesBottomBarWhenPushed { 
    return YES; 
} 

EDIT: Wartość tę można również ustawić z ujęć:

enter image description here

+1

Ustaw go w serii ujęć, jeśli możesz. Zrobiłem to w kontrolce viewcontroller, ale po naciśnięciu przycisku Wstecz pasek zakładek był nadal ukryty. Próbowałem zrobić kod odwrotny i przywrócić go, ale bez powodzenia. – levibostian

+0

Próbowałem tego, nie działał. Ani wersja kodu, ani wersja Storyboard. Ustawiłem go dla każdego kontrolera widoku w mojej aplikacji (ponieważ nie jest w 100% jasne, do którego kontrolera widoku mam go dodać). Zerowy efekt. Kontroler paska kart jest osadzony w kontenerze, który znajduje się w kontrolce widoku, który sam jest osadzony w kontenerze w innym kontrolerze widoku. To zagnieżdżenie może być źródłem problemu. W mojej aplikacji jest tylko jeden kontroler TabBar. –

+2

@BillPatterson działa to tylko dla kontrolerów widoku osadzonych w 'UINavigationController'. Będziesz miał 'UITabViewController' ->' UINavigationController' -> 'MyViewController'. I ustawiasz 'hidesBottomBarWhenPushed' na' YES' w MyViewController – redent84

1

Nie sądzę, istnieje prosty sposób aby to naprawić ponieważ UITabbarViewController jest prawdopodobnie Super widok i wysokość wszystkich „wewnętrzne” poglądów = screenHeight - tabBarHeight - navBarHeight.

Możliwe, że możesz spróbować zmienić swój wewnętrzny kontroler widoku ręcznie, ale wydaje mi się, że możesz mieć problemy z procesem składania aplikacji AppStore firmy Apple, ponieważ myślę, że to narusza ogólne wrażenia użytkownika iOS.

1

I to jak chcesz zrobić stałe (UIViewController) w SWIFT:

override var hidesBottomBarWhenPushed: Bool { 
    get { return true } 
    set { super.hidesBottomBarWhenPushed = newValue } 
} 
1

Moja UITabBarController mieści się w widoku kontenera. Zaznaczenie "Ukryj dolny pasek przy naciśnięciu" nie działa dla mnie. Zamiast tego utworzyłem podklasę kontrolera paska zakładek i programowo ukryłem pasek kart.

class FooTabBar: UITabBarController { 
    override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 
    self.tabBar.isHidden = true 
    } 
} 
Powiązane problemy