我有一个水平的UICollectionView,其中的单元格具有基于内容的高度。这个高度可能会改变。
这些单元格可能具有渐变背景。目前,渐变是通过以下方式应用的:
class PunchCardCollectionViewCell: UICollectionViewCell {
@IBOutlet var containerView: UIView!
var gradientLayer: CAGradientLayer?
override func awakeFromNib() {
super.awakeFromNib()
backgroundColor = UIColor.clear
containerView.backgroundColor = UIColor.white
StylingHandler.addRoundCorners(containerView, radius: 8.0)
}
override func layoutSubviews() {
super.layoutSubviews()
gradientLayer?.frame = bounds
setGradient(offer?.type != .uncharged)
}
private func setGradient(_ gradient: Bool = true) {
if !gradient {
gradientLayer?.removeFromSuperlayer()
} else {
if gradientLayer == nil {
let gradient = ColorClass.rewardGradient()
gradientLayer = CAGradientLayer()
gradientLayer!.colors = [gradient.leftColor, gradient.rightColor]
gradientLayer!.startPoint = gradient.startPoint
gradientLayer!.endPoint = gradient.endPoint
gradientLayer!.locations = [0, 1]
gradientLayer!.frame = containerView.bounds
gradientLayer?.cornerRadius = 8.0
}
containerView.layer.insertSublayer(gradientLayer!, at: 0)
}
}
}
我现在遇到的问题是,有时渐变没有圆角,这可能是因为渐变的大小太大而无法看到圆角。 同样,当将渐变应用于一个单元时(状态更改时),另一单元上的渐变可能会移动(高度变小并恢复到原来的水平)。
我想我在重复使用单元格方面做错了。
有什么想法吗?