更改标签栏背景透明度

时间:2017-08-22 20:47:30

标签: ios swift uitabbarcontroller uitabbar

我正在尝试使我的标签栏控制器中的标签栏具有低不透明度背景,因此它是半透明的,我尝试以编程方式执行此操作,但背景更改为正确的颜色,但始终显示为实心,没有透明度。

这是我的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.
    }
}

2 个答案:

答案 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.
}

enter image description here

答案 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()
    }
}

因此,作为输出,如果我们假设视图控制器的背景颜色为蓝色,则应该如下所示:

enter image description here

如图所示,标签栏不是纯黑色,它包含预期的透明度(0.5)。

此外,为了检查如何生成纯色UIImage,您可以查看此SO答案:Create UIImage with solid color in Swift