Normalement, sur chaque onglet d'une UITabBar
, vous avez une petite image et un titre nommant l'onglet. L'image est positionnée/centrée vers le haut de l'onglet pour accueillir le titre en dessous. Ma question est la suivante: si vous voulez avoir une barre de tabulation avec juste une image et aucun titre, n’est-il pas possible de déplacer l’image vers le bas pour qu’elle soit mieux centrée dans l’onglet?
J'utilise (voir ci-dessous) actuellement:
[tabBarItem setFinishedSelectedImage:tabSelected withFinishedUnselectedImage:tabUnselected];
mais je préférerais utiliser une image plus grande sans titre. Pour le moment, si je fais une image plus grande qu’environ 70 pixels @ 2x, elle commence à dépasser légèrement de la UITabBar
tout en laissant beaucoup d’espace inutilisé en bas.
Essayez d’ajuster le nom tabBarItem
(imageInsets
) (pour déplacer l’image d’icône) et de définir le titre du contrôleur sur nil (aucun titre ne s’affiche donc). Mettez quelque chose comme ceci à la méthode -init
ou -viewDidLoad
dans le contrôleur de vue:
Objectif c
self.tabBarItem.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0);
self.title = nil;
Rapide
self.tabBarItem.imageInsets = UIEdgeInsets(top: 6, left: 0, bottom: -6, right: 0)
self.title = nil
UITabBarItem
est une sous-classe de UIBarItem
qui a la propriété UIEdgeInsets imageInsets
. Jouez un peu avec les incrustations jusqu'à ce que tout soit beau (en fonction des images d'icône de la barre de tabulation)
Créez une sous-classe de UITabBarController
et dans sa viewDidLoad
:
- (void)viewDidLoad
{
[super viewDidLoad];
[self.viewControllers enumerateObjectsUsingBlock:^(UIViewController *vc, NSUInteger idx, BOOL *stop) {
vc.tabBarItem.title = nil;
vc.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0);
}];
}
Swift 3:
for vc in self.viewControllers! {
vc.tabBarItem.title = nil
vc.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0)
}
Si vous utilisez Xamarin, cela fonctionne:
screen.TabBarItem.ImageInsets = new UIEdgeInsets(5, 0, -5, 0);
screen.TabBarItem.Title = "";
Cela a fonctionné pour moi
Swift 4
let array = tabBarController?.customizableViewControllers
for controller in array! {
controller.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0)
}
Pour iOS 11, vous devez remplacer TraitCollection method en dehors du paramétrage de ImageInsets. S'il vous plaît ajouter la méthode dans votre classe UITabBarController sous-classe
public override UITraitCollection TraitCollection {
get {
return UITraitCollection.FromHorizontalSizeClass(horizontalSizeClass: UIUserInterfaceSizeClass.Compact);
}
}
Swift 3.0
Vous pouvez définir des incrustations d'image, définir en haut, à gauche, en bas et à droite selon le design.
self.tabBarItem.imageInsets = UIEdgeInsets(top: 5, left: 0, bottom: 0, right: 0)
Dans Swift 4.2 , UIEdgeInsetsMake
est supprimé, nous devrions plutôt utiliser UIEdgeInsets
,
let array = tabBarController?.customizableViewControllers
for controller in array! {
controller.tabBarItem.imageInsets = UIEdgeInsets(top: 5, left: 0, bottom: -5, right: 0)
}