Примените Shadow вместе с цветом градиента с пользовательским классом - PullRequest
0 голосов
/ 25 февраля 2020

Я пишу один пользовательский класс для кнопки градиента, я хочу применить тень и для этого.

Я получаю цвет градиента, но не получаю тень.

Здесь я думаю У меня проблема с self.clipsToBounds = true

, найдите мой код со следующим.

class GradientButton: UIButton {

    let gradientLayer = CAGradientLayer()

    override init(frame: CGRect) {
        super.init(frame: frame)
        commonInit()
    }
    required public init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        commonInit()
    }

    func commonInit() -> Void {

        layer.cornerRadius = self.frame.size.height / 2.0
        gradientLayer.locations = [0.0, 1.0]
        // top-right to bottom-left
        gradientLayer.startPoint = CGPoint(x: 0.0, y: 1.0)
        gradientLayer.endPoint = CGPoint(x: 1.0, y: 0.0)

        // we only add the layer once, here when called from init
        layer.addSublayer(gradientLayer)
        self.clipsToBounds = true
    }

    func setGradientBackground(colorOne: UIColor, colorTwo: UIColor) {
        gradientLayer.colors = [colorOne.cgColor, colorTwo.cgColor]
        applyShadow(shadoeclr: colorOne)
    }

    override func layoutSubviews() {
        super.layoutSubviews()
        gradientLayer.frame = bounds
    }

    func applyShadow(shadoeclr:UIColor){
        layer.shadowColor = shadoeclr.cgColor
        layer.shadowRadius = 5
        layer.shadowOpacity = 0.5
        layer.shadowOffset = CGSize(width: 0, height: 0)
    }
}

1 Ответ

0 голосов
/ 25 февраля 2020

попробуйте использовать masksToBounds вместо clipsToBounds

...