Apple a ajouté une petite ligne sur le tabBar dans iOS 7, censée fonctionner comme une ombre ou un fondu entre le tabBar et l'interface utilisateur.
Depuis que j'utilise un TabBar sur mesure, la ligne est assez irritante. Comment l'enlever? S'il vous plaît dites-moi que c'est possible, sinon je dois repenser toute mon application lol ....
/ Cordialement
*Modifier
Sloved mon problème avec la ligne de code suivante:
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
UIImage* tabBarBackground = [UIImage imageNamed:@"tabbar_bg.png"];
[[UITabBar appearance] setShadowImage:tabBarBackground];
[[UITabBar appearance] setBackgroundImage:tabBarBackground];
Ce code fonctionne plutôt bien pour moi (je n'ai pas vraiment d'image de fond pour la barre d'onglets):
[tab_main.tabBar setBackgroundImage:[[UIImage alloc] init]];
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
Et j'utilise ces codes pour ajouter un cadre aussi:
UIColor* color_green = UIColorFromRGB(0x348e5b);
tab_main.tabBar.layer.borderWidth = 0.50;
tab_main.tabBar.layer.borderColor = color_green.CGColor;
[[UITabBar appearance] setTintColor:color_green];
J'espère que cela pourra aider.
Dans iOS 8, vous pouvez supprimer la bordure supérieure en définissant le style de barre d'onglets sur Noir dans l'inspecteur.
Rapide
Belle solution simple:
Ecrivez ce code ci-dessous dans votre classe de barre d’onglet personnalisée. Ensuite, il va cacher la ligne d'ombre horizontale.
self.tabBar.setValue(true, forKey: "_hidesShadow")
Objectif c
[self.tabBar setValue:@(YES) forKeyPath:@"_hidesShadow"];
self.tabBarController = [[UITabBarController alloc] init];
[[[self tabBarController] tabBar] setBackgroundImage:[UIImage imageNamed:@"YOURIMAGE.png"]];
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
[_tabBarController.tabBar setBackgroundImage:[UIImage imageNamed:@"tabtarsprnt"]]; //your custom image
[self.tabBarController.tabBar setClipsToBounds:YES];
ce code a également résolu le problème de mon
Je ne vois rien dans l'API UITabBar
qui affecte ce séparateur, mais si le séparateur se trouve dans UITabBar (une sous-classe UIView), je suppose que vous pouvez insérer une nouvelle UIView d'un pixel au-dessus. Vous devez saisir une tranche de l'image que vous souhaitez voir apparaître et la dessiner dans la nouvelle vue. Et je ne suis pas sûr que UITabBar empêcherait d'une manière ou d'une autre l'ajout de la sous-vue ou l'empêcherait d'être au-dessus. Mais c'est par là que je commencerais.
Essayez ceci, ** Objective-C **
//Remove shadow image by assigning nil value.
[[UITabBar appearance] setShadowImage: nil];
// or
// Assing UIImage instance without image reference
[[UITabBar appearance] setShadowImage: [[UIImage alloc] init]];
** Rapide **
//Remove shadow image by assigning nil value.
UITabBar.appearance().shadowImage = nil
// or
// Assing UIImage instance without image reference
UITabBar.appearance().shadowImage = UIImage()
Voici le document Apple pour shadowImage .
@available(iOS 6.0, *)
open var shadowImage: UIImage?
La valeur par défaut est zéro. Si non nil, une image d'ombre personnalisée à afficher à la place de l'image de l'ombre par défaut. Pour qu'une ombre personnalisée soit affichée, utilisez une personnalisation L’image d’arrière-plan doit également être définie avec -setBackgroundImage: (si l’image d’arrière-plan par défaut est utilisée, l’image d’ombre par défaut sera utilisée).
Cela a fonctionné pour moi
UIImage* tabBarBackground = [UIImage new];
if(!OSVersionIsAtLeastiOS7())
{
tabBarBackground = [UIImage imageNamed:@"whitebg"];
}
[[UITabBar appearance] setShadowImage:tabBarBackground];
[[UITabBar appearance] setBackgroundImage:tabBarBackground];
Dans mon cas, je devais également définir une ombre différente. À la fin, la seule chose qui fonctionnait tout en définissant une ombre personnalisée consistait à ajouter un point UIView élevé à un seul point au-dessus de la barre d'onglets:
UIView *whiteLine = [[UIView alloc] initWithFrame:CGRectMake(0.0, -1.0, self.tabBar.frame.size.width, 1.0)];
whiteLine.backgroundColor = [UIColor whiteColor];
[self.tabBar addSubview:whiteLine];
Ajoutez le code suivant dans la méthode AppDelegate.m
didFinishLaunchingWithOptions:
if ([[[UIDevice currentDevice] systemVersion] floatValue]>=7.0)
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];