У меня есть горизонтальный 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)
}
}
}
Проблема, с которой я столкнулся сейчас, заключается в том, что иногда градиент не имеет закругленных углов, что, вероятно, связано с тем, что размер градиента слишком велик, поэтомуэто закругленные углы невидимы.Кроме того, когда градиент применяется к одной ячейке (когда изменяется ее состояние), градиент в другой ячейке может сместиться (высота становится меньше и возвращается к тому, что было).
Я предполагаю, что что-то делаюнеправильно в отношении повторного использования ячеек.
Есть идеи?