web-dev-qa-db-fra.com

iOS 7 tabBar-line, comment le supprimer?

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.

enter image description here

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]];
42
user1293618
    UIImage* tabBarBackground = [UIImage imageNamed:@"tabbar_bg.png"];
    [[UITabBar appearance] setShadowImage:tabBarBackground];
    [[UITabBar appearance] setBackgroundImage:tabBarBackground];   
22
liancheng.jiang

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.

14
superarts.org

Dans iOS 8, vous pouvez supprimer la bordure supérieure en définissant le style de barre d'onglets sur Noir dans l'inspecteur.

7
Artjom Zabelin

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"];
5
Sourabh Sharma
self.tabBarController =  [[UITabBarController alloc] init];
[[[self tabBarController] tabBar] setBackgroundImage:[UIImage imageNamed:@"YOURIMAGE.png"]];
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
1
dineshthamburu
 [_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

0
Daxesh Nagar

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.

0
bneely

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).

0
Krunal

Cela a fonctionné pour moi

UIImage* tabBarBackground = [UIImage new];
if(!OSVersionIsAtLeastiOS7())
{
    tabBarBackground = [UIImage imageNamed:@"whitebg"];
}
[[UITabBar appearance] setShadowImage:tabBarBackground];

[[UITabBar appearance] setBackgroundImage:tabBarBackground];
0
Zoeb S

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];
0
Jeroen

Ajoutez le code suivant dans la méthode AppDelegate.mdidFinishLaunchingWithOptions:

if ([[[UIDevice currentDevice] systemVersion] floatValue]>=7.0)
 [[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
0
Teja Kumar B