我正在尝试使我的标签栏控制器中的标签栏具有低不透明度背景,因此它是半透明的,我尝试以编程方式执行此操作,但背景更改为正确的颜色,但始终显示为实心,没有透明度。
这是我的TabBarViewController
中的代码class TabBarViewController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
self.tabBar.unselectedItemTintColor = UIColor(red: 17.0/255.0, green: 70.0/255.0, blue: 95.0/255.0, alpha: 0.4)
self.tabBar.barTintColor = UIColor(red: 17.0/255.0, green: 70.0/255.0, blue: 95.0/255.0, alpha: 0.5)
// Do any additional setup after loading the view.
}
}
答案 0 :(得分:1)
只需将barTintColor
替换为backgroundColor
。
override func viewDidLoad() {
super.viewDidLoad()
self.tabBar.unselectedItemTintColor = UIColor(red: 17.0/255.0, green: 70.0/255.0, blue: 95.0/255.0, alpha: 0.4)
self.tabBar.backgroundColor = UIColor(red: 17.0/255.0, green: 70.0/255.0, blue: 95.0/255.0, alpha: 0.5)
// Do any additional setup after loading the view.
}
答案 1 :(得分:1)
对于这种情况,您应该为标签栏backgroundimage
属性生成自定义UIImage
。
我们假设您的标签栏所需的颜色 - 应该是透明的 - 是黑色的,您可以在自定义UITabBarController
中实现:
class TabBarViewController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
let transperentBlackColor = UIColor(displayP3Red: 0, green: 0, blue: 0, alpha: 0.5)
let rect = CGRect(x: 0, y: 0, width: 1, height: 1)
UIGraphicsBeginImageContextWithOptions(rect.size, false, 0.0)
transperentBlackColor.setFill()
UIRectFill(rect)
if let image = UIGraphicsGetImageFromCurrentImageContext() {
tabBar.backgroundImage = image
}
UIGraphicsEndImageContext()
}
}
因此,作为输出,如果我们假设视图控制器的背景颜色为蓝色,则应该如下所示:
如图所示,标签栏不是纯黑色,它包含预期的透明度(0.5)。
此外,为了检查如何生成纯色UIImage
,您可以查看此SO答案:Create UIImage with solid color in Swift。