请你帮忙,我创建了一个渐变色,并将其添加到一个按钮上,但现在我用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
}
}
我想让图像出现在渐变的顶部,就像下面这样:
你可以移动按钮的 imageView
至 top position
与 bringSubview(toFront:)
if let imageView = button.imageView {
productsAndServicesButton.bringSubview(toFront: imageView)
}
作为 @Oleh 的答案的另一种选择,你可以向渐变层添加内容,比如。
gradient.contents = imageView.image?.cgImage