在UIButton的backgroundImage顶部添加渐变图层

时间:2017-10-06 20:58:32

标签: ios swift uibutton

我有一个带有UIStackView中的按钮的项目。每个按钮都有一个backgroundImage。所有内容都按照需要呈现,但我想在backgroundImage前面放置一个半透明的渐变图层,以便按钮上的文字具有更多的对比度。

我试图在viewDidLoad中使用此代码在每个UIButton的backgroundImage前面添加半透明渐变:

buttonArray = [buttonOne, buttonTwo, buttonThree, buttonFour]
let gradientLayer = CAGradientLayer()
gradientLayer.colors = [UIColor(white: 1.0, alpha: 0.5)]
// gradientLayer.colors = [UIColor(white: 1.0, alpha: 0.5).cgColor]
// gradientLayer.colors = [UIColor.orange]
// gradientLayer.colors = [UIColor.orange.cgColor]
buttonArray.forEach({$0.imageView?.layer.insertSublayer(gradientLayer, at: 0)})

目前看来,没有任何补充。我尝试将颜色更改为没有alpha值的颜色,并将所需的颜色更改为.cgColor。没有骰子。谢谢你的阅读。我欢迎您提出如何将gradLayer放在UIButton的backgroundImage前的建议。

我根据找到的here

代码进行了尝试

1 个答案:

答案 0 :(得分:0)

我认为您必须指定多种颜色,以及图层的边界:

    let buttonArray = [buttonOne, buttonTwo, buttonThree, buttonFour]

    for button in buttonArray {
        let gradientLayer = CAGradientLayer()
        gradientLayer.colors = [UIColor(white: 0.5, alpha: 0.5).cgColor, UIColor(white: 1.0, alpha: 0.5).cgColor]
        gradientLayer.frame = (button?.bounds)!
        button?.layer.insertSublayer(gradientLayer, at: 0)
    }