更改标签栏背景透明度

Ark*_*ken 5 uitabbarcontroller uitabbar ios swift

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

这是我的 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.
    }
}
Run Code Online (Sandbox Code Playgroud)

Ahm*_*d F 5

对于这种情况,您应该生成一个自定义UIImage的标签栏backgroundimage属性。

让我们假设您的标签栏所需的颜色 - 应该是透明的 - 是黑色,您可以在您的自定义中实现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()
    }
}
Run Code Online (Sandbox Code Playgroud)

所以,作为输出,如果我们假设你的视图控制器的背景颜色是蓝色,它应该看起来像:

在此处输入图片说明

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

此外,为了检查如何生成纯色UIImage,您可以检查这个 SO 答案:在 Swift 中使用纯色创建 UIImage


PGL*_*ngo 1

只需替换barTintColorbackgroundColor.

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.
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述