web-dev-qa-db-fra.com

Supprimer la ligne supérieure de TabBar

Sur iOS 10, ce code ne fonctionne pas pour supprimer la ligne d'ombre tabBar:

[[UITabBar appearance] setShadowImage:[[UIImage alloc] init]];

Quelqu'un sait, que dois-je faire pour l'enlever?

Sur iOS 9.3 avec ces deux lignes, la ligne est supprimée, mais iOS 10 ignore la commande setShadowImage.

17
jcamacho

supprime la ligne de dessus pour @iOS 13.0

let appearance = tabBar.standardAppearance
appearance.shadowImage = nil
appearance.shadowColor = nil
tabBar.standardAppearance = appearance;

supprime la ligne de dessus pour iOS 12.0 et versions antérieures

tabBar.shadowImage = UIImage()
tabBar.backgroundImage = UIImage()
32
sahiljain

Essayez juste de beugler le code pour iOS 1: -

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    [[UITabBar appearance] setBackgroundImage:[UIImage imageNamed:@"fondoTabBar"]];
    [UITabBar appearance].layer.borderWidth = 0.0f;
    [UITabBar appearance].clipsToBounds = true;
    return YES;
}

Swift 3.x

UITabBar.appearance().layer.borderWidth = 0.0
UITabBar.appearance().clipsToBounds = true
37
Mitul Marsoniya

Pour iOS 1

if (@available(iOS 13.0, *)) {
    UITabBarAppearance *appearance = [self.tabBarController.tabBar.standardAppearance copy];
    appearance.shadowImage = nil;
    appearance.shadowColor = nil;
    self.tabBarController.tabBar.standardAppearance = appearance;
}
8
gnoix

Testé sur iOS 12.1

override func viewDidLoad() {
    // Remove default border line
    tabBar.shadowImage = UIImage()
    tabBar.backgroundImage = UIImage()
    tabBar.backgroundColor = UIColor.white
}
3
denis_lor

Pour iOS 10, le style de la barre de tabulations changé en noir a fait l'affaire

self.tabBarController.tabBar.shadowImage = UIImage()
self.tabBarController.tabBar.barStyle = .Black
2
Hamdan Javed

Cela fonctionne pour moi @ iso13:

AppDelegate.Swift

UITabBar.appearance().clipsToBounds = true
UITabBar.appearance().shadowImage = nil

ou

UITabBar.appearance().clipsToBounds = true
UITabBar.appearance().layer.borderWidth = 0

ou

UITabBar.appearance().clipsToBounds = true
UITabBar.appearance().layer.borderColor = UIColor.clear.cgColor
2
kironet

Je n'ai pas la réputation de commenter mais pour ajouter à la réponse de gnoix, j'ai eu un problème légèrement différent en ce que je voulais l'ombre et l'arrière-plan clair donc je l'avais dans Swift

if #available(iOS 13.0, *) {
    let appearance = tabBar.standardAppearance.copy()
    appearance.configureWithTransparentBackground()
    tabBar.standardAppearance = appearance
} else {
    tabBar.backgroundColor = UIColor.clear
    let image = UIImage(ciImage: CIImage(color: CIColor.clear)).af_imageAspectScaled(toFit: tabBar.bounds.size)
    tabBar.backgroundImage = image
    tabBar.shadowImage = image
}
1
Andrew

Solution de travail à partir d'iOS 13.

// remove top line
if #available(iOS 13.0, *) {
    // ios 13.0 and above
    let appearance = tabBar.standardAppearance
    appearance.shadowImage = nil
    appearance.shadowColor = nil
    appearance.backgroundEffect = nil
    // need to set background because it is black in standardAppearance
    appearance.backgroundColor = .someColor
    tabBar.standardAppearance = appearance
} else {
    // below ios 13.0
    let image = UIImage()
    tabBar.shadowImage = image
    tabBar.backgroundImage = image
    // background
    tabBar.backgroundColor = .someColor
}
1
mkz

Vous pouvez le faire de cette façon dans votre FirstViewController.Swift:
Swift 4.2

self.tabBarController!.tabBar.layer.borderWidth = 0.50
self.tabBarController!.tabBar.layer.borderColor = UIColor.clear.cgColor
self.tabBarController?.tabBar.clipsToBounds = true

Changez simplement la couleur de la bordure comme vous le souhaitez.

0
Knight Fighter

J'ai eu le même problème dans iOS 10. J'ai résolu ce problème en changeant simplement la hauteur de UITabBar (par défaut, 49). Vérifiez-le ici comment changer la hauteur.

0
Alexander Karpov

C'est une image d'ombre (propriété) de la barre d'onglets. Essayez les solutions suivantes et voyez.

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

** Swift **

//Remove shadow image by assigning nil value.
UITabBar.appearance().shadowImage = nil

// or 

// Assing UIImage instance without image reference
UITabBar.appearance().shadowImage = UIImage()


Voici Apple guide pour shadowImage .

@available(iOS 6.0, *)
open var shadowImage: UIImage?

La valeur par défaut est nil. Si non nul, une image d'ombre personnalisée à afficher à la place de l'image d'ombre par défaut. Pour qu'une ombre personnalisée soit affichée, une image d'arrière-plan personnalisée 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

Vous devez implémenter les deux méthodes suivantes en même temps:

[[UITabBar appearance] setShadowImage:[UIImage new]];
[[UITabBar appearance] setBackgroundImage:[UIImage new]];
0
BabyFish