tabBar中的渐变背景

时间:2016-03-03 11:00:28

标签: ios swift

我已经将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)

3 个答案:

答案 0 :(得分:9)

在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.addSublayer(layerGradient)
    }
}

您可以在标签栏中看到如下渐变:

enter image description here

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

enter image description here

答案 1 :(得分:4)

使用

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

代替

    self.tabBar.layer.addSublayer(layerGradient)

https://stackoverflow.com/a/48853918/4449202

答案 2 :(得分:2)

为了扩展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)