web-dev-qa-db-fra.com

iOS TabbarViewController masquer la barre d'onglets

J'ai un viewcontroller qui implémente UITabbarViewController, et je veux cacher la barre de tabulation et la remplacer par moi-même, 

self.tabBar.hidden = YES;

la barre d'onglets a disparu MAIS il y a une zone vide (la bleue) au bas de la vue ... Je ne veux pas de la zone vide, comment puis-je résoudre ce problème? Je vous remercie. 

edit: la zone bleue est:

self.view.backgroundColor = [UIColor blueColor];
24
jxdwinter

Nous avons fait exactement la même chose dans notre application. Pour masquer le TabBar par défaut, substituez simplement la méthode hidesBottomBarWhenPushed dans votre contrôleur de vue parent (ou dans chaque contrôleur de vue de votre application)

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

EDIT: Cette valeur peut également être définie à partir de Storyboard:

enter image description here

65
redent84

Je ne pense pas qu'il existe un moyen facile de résoudre ce problème car UITabbarViewController correspond probablement à votre super vue et à la hauteur de toutes les vues "internes" = screenHeight - tabBarHeight - navBarHeight

Vous pouvez peut-être essayer de redimensionner manuellement votre contrôleur de vue interne, mais je pense que vous pourriez avoir des problèmes avec le processus de soumission AppStore d’Apple, car je pense que cela constitue une violation de l’expérience utilisateur iOS générale.

1
martin

Ma UITabBarController est hébergée dans une vue conteneur. La vérification de "Masquer la barre inférieure lors du Push" ne fonctionnait pas pour moi. Au lieu de cela, j'ai créé une sous-classe du contrôleur de barre d'onglets et masqué la barre d'onglets par programme.

class FooTabBar: UITabBarController {
  override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    self.tabBar.isHidden = true
  }
}
1
Mark Suman

Et voici comment vous feriez le remplacement (UIViewController) dans Swift:

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