渐变层未显示在 UIButton 上

Ama*_*wla 2 uibutton cagradientlayer swift swift4

我正在尝试创建一个可以在整个应用程序中使用的自定义 UIButton。我想应用渐变作为其背景,但是使用这个非常简单的代码没有显示渐变。如果有人能在下面的代码中指出我的错误,那将非常有帮助。

class GradientBtn: UIButton {

    let gradientLayer = CAGradientLayer()

    override init(frame: CGRect) {
        super.init(frame: frame)

        themeConfig()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        themeConfig()
    }

    private func themeConfig() {
        //shadow
        layer.shadowOffset = CGSize.zero
        layer.shadowColor = UIColor.gray.cgColor
        layer.shadowOpacity = 1.0

        //titletext
        setTitleColor(Theme.colorWhite, for: .normal)
        titleLabel?.font = UIFont(name: Theme.fontAvenir, size: 18)

        //rounded corners
        layer.cornerRadius = frame.size.height / 2

        //gradient
        gradientLayer.locations = [0.0, 1.0]
        gradientLayer.colors = [Theme.colorlightBlue, Theme.colorMidBlue]
        gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.0)
        gradientLayer.endPoint = CGPoint(x: 1.0, y: 1.0)
        gradientLayer.frame = bounds
        layer.insertSublayer(gradientLayer, at: 0)

    }

}
Run Code Online (Sandbox Code Playgroud)

Sh_*_*han 5

代替

gradientLayer.colors = [Theme.colorlightBlue, Theme.colorMidBlue]
Run Code Online (Sandbox Code Playgroud)

gradientLayer.colors = [Theme.colorlightBlue.cgColor, Theme.colorMidBlue.cgColor]
Run Code Online (Sandbox Code Playgroud)

添加总是好的

override func layoutSubviews() {
    super.layoutSubviews()
    gradientLayer.frame = self.bounds
}
Run Code Online (Sandbox Code Playgroud)