tabBar 中的渐变背景

Gradient background in tabBar

我已经将 TabBarController 子类化,然后尝试制作渐变背景。但是它似乎不起作用。什么都没有显示。顺便说一下,我正在使用 Hue 框架

    let tabBarGradient = [UIColor.redColor(), UIColor.blackColor()].gradient { gradient in
        gradient.frame = self.tabBar.frame
        gradient.startPoint = CGPointMake(0,0.5)
        gradient.endPoint = CGPointMake(1,0.5)

        return gradient
    }

    self.tabBar.layer.addSublayer(tabBarGradient)

在您的 CustomTabBarController 中,编写此代码:

import UIKit

class GradientTabBarController: UITabBarController {

    let layerGradient = CAGradientLayer()

    override func viewDidLoad() {
        super.viewDidLoad()

        layerGradient.colors = [UIColor.red.cgColor, UIColor.yellow.cgColor]
        layerGradient.startPoint = CGPoint(x: 0, y: 0.5)
        layerGradient.endPoint = CGPoint(x: 1, y: 0.5)
        layerGradient.frame = CGRect(x: 0, y: 0, width: view.bounds.width, height: view.bounds.height)
        self.tabBar.layer.insertSublayer(layerGradient, at: 0)
    }
}

您可以在标签栏中看到这样的渐变:

以及您在故事板中将 CustomTabBarController 分配给您的 TabBarController 的故事板。

为了扩展 Khuong 的回答,上面的内容不适用于 Y 渐变,因为它使用 view.Frame 设置 layerGradient.Frame 的宽度和高度。 view 是容器视图,比标签栏大。相反,在设置 layerGradient.Frame 时使用 tabBar.Frame:

 layerGradient.frame = CGRect(x: 0, y: 0, width: tabBar.bounds.width,height: tabBar.bounds.height)

使用

    self.tabBar.layer.insertSublayer(layerGradient, at:0)

而不是

    self.tabBar.layer.addSublayer(layerGradient)