Градиентный фон UICollectionViewCell с динамическим размером - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть горизонтальный 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)
        }
    }
}

Проблема, с которой я столкнулся сейчас, заключается в том, что иногда градиент не имеет закругленных углов, что, вероятно, связано с тем, что размер градиента слишком велик, поэтомуэто закругленные углы невидимы.Кроме того, когда градиент применяется к одной ячейке (когда изменяется ее состояние), градиент в другой ячейке может сместиться (высота становится меньше и возвращается к тому, что было).

Я предполагаю, что что-то делаюнеправильно в отношении повторного использования ячеек.

Есть идеи?

...