J'essaie de rendre un arrière-plan flou la UITabBar
de ma UITabViewController
, et l'idée est de le rendre flou et transparent de manière à ce que les vues ci-dessous défilent.
Malheureusement, je ne peux pas pour la vie obtenir que la barre d'onglets soit transparente. Quoi que je fasse, il y a toujours un fond noir dans la barre d’onglet qui empêche les contrôleurs de vue sous-jacents de s’exprimer.
Si je modifie l'alpha de UITabBar
par quelque chose de bas, je peux voir que la table est bien derrière, mais vous pouvez voir que la UITabBar
a une sorte d'arrière-plan qui empêche la table de voir complètement (et je ne le fais pas). vous ne voulez pas que les éléments des boutons soient invisibles, mais simplement l’arrière-plan de la barre d’onglet).
Comment se peut-il?
La vue de la barre d'onglets personnalisée s'est chargée, j'ai:
self.tabBar.translucent = true
self.tabBar.alpha = 0.3
self.tabBar.backgroundColor = UIColor.clearColor().colorWithAlphaComponent(0.0)
self.tabBar.layer.backgroundColor = UIColor.clearColor().colorWithAlphaComponent(0.0).CGColor
self.tabBar.backgroundImage = nil
self.tabBar.shadowImage = nil
et dans le AppDelegate j'ai:
UITabBar.appearance().barTintColor = UIColor.clearColor()
UITabBar.appearance().tintColor = kColorAccent
UITabBar.appearance().translucent = true
UITabBar.appearance().translucent = true
UITabBar.appearance().backgroundColor = UIColor.clearColor()
UITabBar.appearance().backgroundImage = nil
UITabBar.appearance().layer.backgroundColor = UIColor.clearColor().CGColor
UITabBar.appearance().shadowImage = nil
... ouais C'est excessif mais je veux tout essayer.
Une idée de ce qu'il faut faire?
imageWithColor a été remplacé par jotImage
let size = CGSize(width: tabBar.bounds.size.width,
height: tabBar.bounds.size.height)
tabBar.backgroundImage = UIImage.jotImage(with: UIColor.clear, size: size)
J'ai trouvé une solution de préfet, il vous suffit de sous-classer UITabBar, puis d'effectuer les opérations suivantes pour nettoyer les vues gênantes.
class MainTabBar: UITabBar {
var cleanDone = false
override func layoutSubviews() {
super.layoutSubviews()
self.deleteUnusedViews()
}
func deleteUnusedViews() {
if !self.cleanDone {
var removeCount = 0
for (_, eachView) in (self.subviews.enumerate()) {
if NSStringFromClass(eachView.classForCoder).rangeOfString("_UITabBarBackgroundView") != nil {
eachView.removeFromSuperview()
removeCount += 1
}
if NSStringFromClass(eachView.classForCoder).rangeOfString("UIImageView") != nil {
eachView.removeFromSuperview()
removeCount += 1
}
if removeCount == 2 {
self.cleanDone = true
break
}
}
}
}
}
la seule solution qui a fonctionné pour moi était la suivante:
UITabBar.appearance().shadowImage = UIImage()
UITabBar.appearance().backgroundImage = UIImage()
et réglez: (vous pouvez le faire aussi dans le storyboard)
UITabBar.appearance().barTintColor = UIColor.clear
mais ce que je dois définir dans le storyboard, c'est: