2017-04-04 96 views
2

可否请您协助,我已经创建了一个渐变,我已添加到按钮,但现在我已使用故事板设置的按钮图像不再显示。我的代码如下:Swift:向按钮添加渐变后不显示按钮图像

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 
    } 


} 

我想要的形象出现在梯度的顶部像下面

the red will be the gradient and the white image is the one i want to display

回答

4

您可以将按钮的imageView移动到top positionbring​Subview(to​Front:​)

if let imageView = button.imageView { 
    productsAndServicesButton.bringSubview(toFront: imageView) 
}