111 votes

Déplacement de l'image UITabBarItem vers le bas ?

Normalement, sur chaque onglet d'un UITabBar vous avez une petite image et un titre qui nomme l'onglet. L'image est positionnée/centrée vers le haut de l'onglet pour s'adapter au titre situé en dessous. Ma question est la suivante : si vous voulez avoir une barre d'onglets avec juste une image et pas de titre, y a-t-il un moyen de déplacer l'image vers le bas pour qu'elle soit mieux centrée dans l'onglet ?

J'utilise actuellement (voir ci-dessous) :

[tabBarItem setFinishedSelectedImage:tabSelected withFinishedUnselectedImage:tabUnselected];

mais je préférerais utiliser une image plus grande sans titre. Pour l'instant, si j'agrandis l'image au-delà de 70 pixels@2x, elle commence à se détacher du haut de l'écran. UITabBar tout en laissant beaucoup d'espace inutilisé en bas.

195voto

Lukas Kukacka Points 2669

Essayez d'ajuster tabBarItem 's imageInsets (pour déplacer l'image de l'icône) et en mettant le titre des contrôleurs à nil (pour qu'aucun titre ne soit affiché). Mettez quelque chose comme ceci dans -init o -viewDidLoad dans le contrôleur de vue :

Objectif-C

self.tabBarItem.imageInsets = UIEdgeInsetsMake(6, 0, -6, 0);
self.title = nil;

Swift

self.tabBarItem.imageInsets = UIEdgeInsets(top: 6, left: 0, bottom: -6, right: 0)
self.title = nil

UITabBarItem est une sous-classe de UIBarItem qui a UIEdgeInsets imageInsets propriété. Jouez un peu avec les inserts jusqu'à ce que cela vous convienne (en fonction des images de l'icône de votre barre de tabulation).

Ajustements spécifiques à l'iPad

Sur l'iPad, les éléments de la barre d'onglets sont distribués horizontalement (icône et étiquette côte à côte).

Pour ajuster l'espace entre l'icône et l'étiquette, réglez l'horizontale. imageInsets au lieu des verticaux.

155voto

Neil Galiaskarov Points 3907

Vous pouvez aussi le faire via le storyboard. Sélectionnez votre élément de barre d'onglets, allez dans l'inspecteur de taille et attribuez les inserts appropriés.

enter image description here

*Démonstration sur Xcode, Version 7.3.1 (7D1014)

55voto

Brian Points 3134

Créez une sous-classe de UITabBarController et dans son 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)
}

11voto

Alfi Points 997

Cela a fonctionné pour moi

Swift 4

let array = tabBarController?.customizableViewControllers
for controller in array! {
    controller.tabBarItem.imageInsets = UIEdgeInsetsMake(5, 0, -5, 0)
}

10voto

Jelle Points 181

Si vous utilisez Xamarin, cela fonctionne :

screen.TabBarItem.ImageInsets = new UIEdgeInsets(5, 0, -5, 0);
screen.TabBarItem.Title = "";

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X