swift - layer - 渐变色 - CAGradientLayer

 

1。创建 渐变色

   /// 渐变色:默认从上到下
    private var gradientLayer: CAGradientLayer = {
        let g = CAGradientLayer()
        g.colors = [UIColor.init(hexColor: "DBB479").cgColor,
                        UIColor.init(hexColor: "F7E1B3").cgColor]
        //改为从左到右 的渐变
        g.startPoint = CGPoint(x: 0, y: 0)
        g.endPoint = CGPoint(x: 1, y: 0)
        return g
    }()

  

2.给指定view 添加渐变色

    /// 荣誉背景图
    private lazy var credibilityBgView : UIView = {
        let v = UIView()
        v.layer.addSublayer(self.gradientLayer)
        v.translatesAutoresizingMaskIntoConstraints = false
        v.layer.cornerRadius = 5
        v.layer.masksToBounds = true
        v.isUserInteractionEnabled = true
        v.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(clcikCredibilityBgView)))
        return v
    }()

  

3. 在自定义的view中 设置 渐变色frame:draw

    override func draw(_ rect: CGRect) {
        super.draw(rect)
        gradientLayer.frame = credibilityBgView.bounds
    }

 

4.如果在控制器里面,viewDidLayoutSubviews

 override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        nextBtnAddLayer()
    }

    /// 下一步按钮添加渐变色
    func nextBtnAddLayer(){
        let gradient = CAGradientLayer()
        gradient.colors = [UIColor.init(hexString: "#FD904B").cgColor,
                           UIColor.init(hexString: "#FFA64D").cgColor ]
        //改为从左到右 的渐变
        gradient.startPoint = CGPoint(x: 0, y: 0)
        gradient.endPoint = CGPoint(x: 1, y: 0)
        nextBtn.layer.insertSublayer(gradient, at: 0)
        gradient.frame = nextBtn.bounds
    }

  

注意 直接用addSubLayer 会遮盖住 子控件, 使用insertSublayer 不会有问题

  

转载于:https://www.cnblogs.com/qingzZ/p/10108797.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值