J'ai implémenté un UITabBar personnalisé et j'ai toujours ce dégradé/ombre au-dessus. J'ai ajouté
[self.tabBar setBackgroundImage:[UIImage imageNamed:@"navBarBottom.png"]];
qui change simplement l’arrière-plan tout en gardant le dégradé de l’ombre.
Qu'est-ce que je fais mal ? Y a-t-il quelque chose à préciser pour s'en débarrasser?
Ce que j'ai :
Ce que je veux :
Je vous remercie.
Essayez de définir une image ombrée transparente de 1x1 pixel pour UITabBar:
[[UITabBar appearance] setShadowImage:[UIImage imageNamed:@"transparentShadow.png"]];
Similarité en réponse pour cette question ... si vous ne voulez pas jouer avec une image transparente 1x1, cela fonctionne aussi:
[[UITabBar appearance] setBackgroundImage:[[UIImage alloc] init]];
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
En rapide:
UITabBar.appearance().shadowImage = UIImage()
UITabBar.appearance().backgroundImage = UIImage()
Rapide
Essayez ceci pour votre barre d'onglets personnalisée. Il va cacher la ligne d'ombre horizontale.
self.tabBar.setValue(true, forKey: "_hidesShadow")
Objectif c
[self.tabBar setValue:@(YES) forKeyPath:@"_hidesShadow"];
Swift 4
UITabBar.appearance().layer.borderWidth = 0.0
UITabBar.appearance().clipsToBounds = true
Il suffit de définir une image pour ne pas supprimer la ligne d’ombre; vous devez définir sa valeur pour borderWidth sur 0. Voici le code
[[Apparence UITabBar] setShadowImage: [UIImage new]];
[Apparence UITabBar] .layer.borderWidth = 0.0f;
[Apparence UITabBar] .clipsToBounds = true;
Voici une autre réponse facile à implémenter:
[self.tabBar setValue:@(YES) forKeyPath:@"_hidesShadow"];
Travaillé pour moi.
Placez ceci dans votre AppDelegate sous didFinishLaunchingWithOptions :
[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];
[[UITabBar appearance] setBackgroundImage:[[UIImage alloc] init]];
L'appel de [[UITabBar appearance] setShadowImage:]
permettra de personnaliser toutes les instances UITabBar
de votre application.
Si vous souhaitez personnaliser une seule UITTabBar
, procédez comme suit:
[self.tabBarController.navigationController.navigationBar setShadowImage:[UIImage new]];
Essayez ceci sur viewDidload.
override func viewDidLoad() {
super.viewDidLoad()
self.tabBar.setValue(true, forKey: "_hidesShadow")
}
Ça marche pour moi
Dans votre contrôleur de vue ou les contrôleurs de vue ou BasicViewController dont la plupart des contrôleurs de vue héritent dans viewDidLoad, placez simplement ces 2 lignes:
[[UITabBar appearance] setBackgroundImage:[UIImage imageNamed:@"tab_bar_background"]];
[[UITabBar appearance] setShadowImage:[UIImage imageNamed:@"transparent_shadow"]];
Assurez-vous que [email protected] est une image 1x1 ou 2x2 transparente et que [email protected] est une image 640x100 car la barre inférieure mesure 50 pixels de haut.
Fonctionne sur iOS 9.3
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 les recommandations de 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’ombre par défaut sera utilisée).