我一直在尝试在我的应用中为UITabBar添加渐变。尝试几次失败后,我按照this question和的步骤进行操作。渐变现在有效,但UITabBarItems是不可见的(尽管它们都有效)。如何确保渐变和UIITabBarItems都可见?
class GradientTabBarController: UITabBarController {
let layerGradient = CAGradientLayer()
override func viewDidLoad() {
super.viewDidLoad()
print("custom tabbar loaded")
layerGradient.colors = [UIColor(named: "tabBarGradient1")?.cgColor, UIColor(named: "tabBarGradient2")?.cgColor]
layerGradient.startPoint = CGPoint(x:0.5, y: 0)
layerGradient.endPoint = CGPoint(x: 0.5, y: 1)
layerGradient.frame = tabBar.bounds
self.tabBar.layer.addSublayer(layerGradient)
}
}
缺少的图标(来自Interface Builder的视图) {{3}}
答案 0 :(得分:2)
不支持您正在做的事情。但是,如果您要执行此操作,则需要将渐变图层放在标签栏项目后面。您将它放在标签栏项目的前中:
self.tabBar.layer.addSublayer(layerGradient)
你需要说更多的话:
self.tabBar.layer.insertSublayer(layerGradient, at:0)
我们的想法是将层放在标签栏项目后面。但究竟要使用什么号码,我不确定;你必须进行实验,我不能保证任何此类行动的稳健性。它可能根本不起作用,因为标签栏项目不是视图。
为标签栏设置自定义背景的正确方法是使UIView显示渐变,并将其设置为标签栏backgroundImage
。为什么不用正确的支持方式而不是你的hacky不支持的方式?你应该使用框架,而不是战斗框架。