Swift:在向按钮添加渐变后,按钮图像未显示

6

您好,请问能否帮忙翻译一下,我已经创建了一个渐变效果并将其添加到了一个按钮上,但是现在使用Storyboard设置的按钮图片不再显示。以下是我的代码:

import UIKit

class MenuViewController: UIViewController {

    @IBOutlet weak var productsAndServicesButton: UIButton!

       override func viewDidLoad() {
        super.viewDidLoad()

        let bg = CAGradientLayer().redBackgroundGradient()
        bg.frame = self.productsAndServicesButton.bounds
        self.productsAndServicesButton.layer.insertSublayer(bg, at: 0)

   }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }



}

实际渐变实现的函数代码如下:

import UIKit

extension CAGradientLayer {

    func redBackgroundGradient() -> CAGradientLayer{
        let startColor =  UIColor(red:0.82, green:0.13, blue:0.19, alpha:1.0)
        let centreColor = UIColor(red:0.65, green:0.04, blue:0.10, alpha:1.0)
        let endColor = UIColor(red:0.56, green:0.04, blue:0.09, alpha:1.0)

        let gradientColors : [CGColor] = [startColor.cgColor,centreColor.cgColor,endColor.cgColor]
        let gradientLocations : [Float] = [0.0,0.5,1.0]
        let gradientLayer : CAGradientLayer = CAGradientLayer()
        gradientLayer.colors = gradientColors
        gradientLayer.locations = gradientLocations as [NSNumber]?

        return gradientLayer
    }


}

我希望图片能像下面这样出现在渐变之上: 红色部分是渐变,白色图片是我想要显示的。
2个回答

19

您可以使用bring​Subview(to​Front:​)方法将按钮的imageView移到top position。

if let imageView = button.imageView {
    productsAndServicesButton.bringSubviewToFront(imageView)
}

0

作为 @Oleh 的回答的替代方案,您可以像这样向渐变图层添加内容:

gradient.contents = imageView.image?.cgImage

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接