UITableViewCell

时间:2019-04-05 20:19:37

标签: ios swift uitableview cagradientlayer

好,所以我需要为自定义UITableViewCell添加渐变。

在单元格初始化中,添加其子代并约束它们。

此后,我需要为其子项之一添加一个渐变UIImageView

我这样做是:

imgView.layer.addSublayer(mainGradient(imgView.frame.size.width, imgView.frame.size.height))

问题似乎是,虽然在UITableViewCell.init上实际上没有单元格框架,所以一旦imgView框架被约束设置后,它也没有框架,所以渐变也没有框架。

我尝试在layoutSubviews方法上添加该层,但结果是仅在滚动tableView时才添加该层,并且每次滚动时都添加一个新的层,导致每次滚动时它都变暗。

关于我该怎么做的任何想法?

1 个答案:

答案 0 :(得分:0)

在表格视图控制器中,创建对渐变图层的引用,例如:

var gradientLayer: CAGradientLayer!

在自定义单元格类中,创建该层并将其添加为init函数中的子层。

然后,也在您的自定义单元格类中,实现layoutSubviews()

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