UIVisualEffectView в ячейках замедляет прокрутку UICollectionView

Я имею UICollectionView который содержит клетки с большими изображениями. Прокрутка была плавной, пока я не добавил (маленький) UIVisualEffectView в каждую клетку. Теперь производительность прокрутки ужасна.

Вот весь код, который что-то делает с этим UIVisualEffectView код:

class ThemeCardCell: UICollectionViewCell {
    private let priceTagEffectView = UIVisualEffectView()

    override func layoutSubviews() {
        super.layoutSubviews()
        if priceTagEffectView.superview == nil {
            priceTagEffectView.effect = UIBlurEffect(style: UIBlurEffectStyle.Light)
            priceTagEffectView.frame = CGRect(x: bounds.width - priceTagMargin.width - 80, y: priceTagMargin.height, width: 80, height: 40)
            priceTagEffectView.opaque = true
            addSubview(priceTagEffectView)
        }
    }
}

Что я могу сделать, чтобы улучшить производительность прокрутки?

1 ответ

Решение

Не используйте UIVisualEffectView таким образом, это то, что вы можете сделать. Apple предоставила много информации о производительности анимации / прокрутки, и подобные вещи находятся в верхней части списка того, чего не следует делать. И визуальные эффекты являются худшими; они не просто размывают изображение - они выполняются в гораздо более высокой точке цепочки рендеринга, и вы заставляете их выполнять рендеринг в каждом кадре (отсюда и проблема).

Другие вопросы по тегам