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];
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:
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.
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
}
}
Et voici comment vous feriez le remplacement (UIViewController
) dans Swift:
override var hidesBottomBarWhenPushed: Bool {
get { return true }
set { super.hidesBottomBarWhenPushed = newValue }
}