通过CAGradientLayer给Cell添加渐变色

在给Cell添加渐变色的时候,我先是将图层的生成与插入放在了cell的awakeFromNib方法中

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
        self.addGradients(colors: <#T##[(startColor: UIColor, endColor: UIColor)]#>, points: <#T##[(startPoint: CGPoint, endPoint: CGPoint)]#>)
    }

然而,这样处理,造成的结果是这样的:


通过CAGradientLayer给Cell添加渐变色_第1张图片
WechatIMG62.jpeg

emmmmm,看来awakeFromNib执行时,并不能获得当前cell正确的bounds,所以,我们将方法放进layoutSubviews中

    override func layoutSubviews() {
        //瞎写了一串
        self.addGradients(colors: [(UIColor.black, UIColor.red),(UIColor.gray, UIColor.white)], points: [(CGPoint(x: 0, y: 0.5), CGPoint(x: 0.5, y: 0.75)),(CGPoint(x: 0.75, y: 1),CGPoint(x: 1, y: 0.75))])
    }

运行一下

通过CAGradientLayer给Cell添加渐变色_第2张图片
WechatIMG63.jpeg

正常多了

再有,不要使用frame来设置layer,尤其是在滚动视图中,会造成layer相对父layer的偏移

你可能感兴趣的:(通过CAGradientLayer给Cell添加渐变色)