web-dev-qa-db-fra.com

Impossible de définir l'image d'ombre de la barre d'onglets dans iOS 13

Avant iOS13, j'utilisais le code ci-dessous pour supprimer la bordure supérieure de la barre d'onglets:

UITabBar.appearance().shadowImage = UIImage()
UITabBar.appearance().backgroundImage = UIImage()

Mais cela ne fonctionne pas avec iOS13, et je cherche une solution à cela. Avez-vous des pensées?

6
Volodymyr Davydenko

Dans iOS 13, vous pouvez utiliser une approche basée sur l'apparence avec des méthodes intégrées pour configurer la transparence:

    if #available(iOS 13, *) {
        let appearance = self.tabBar.standardAppearance.copy()
        appearance.configureWithTransparentBackground()
        tabBar.standardAppearance = appearance
    } else {
        tabBar.backgroundImage = UIImage()
        tabBar.shadowImage = UIImage()
        tabBar.barTintColor = UIColor.clear
    }

Et pour le modifier à nouveau, vous pouvez faire la même chose en utilisant configureWithDefaultBackground ():

    if #available(iOS 13, *) {
        let appearance = self.tabBar.standardAppearance.copy()
        appearance.configureWithDefaultBackground()
        tabBar.standardAppearance = appearance
    } else {
        tabBar.barTintColor = nil
        tabBar.backgroundImage = nil
        tabBar.shadowImage = nil
    }
1
Sune