UIVisualEffectView явно добавлен в UICollectionViewCell - PullRequest
0 голосов
/ 29 августа 2018

У меня UICollectionView с большим количеством клеток. На ячейках есть изображения, которые должны быть размыты. Вот почему я добавляю UIVisualEffectView с эффектом размытия к image views. Ячейки похожи на страницы - каждая ячейка занимает весь экран.

Проблема со второй ячейкой. Когда это появляется, размытое представление добавляется визуально, и это уродливо. Остальные ячейки имеют размытый вид, когда они становятся видимыми на экране и все в порядке. Это код, который я использую для добавления blur view:

class ImageCell: UICollectionViewCell {

    @IBOutlet weak var mainImageView: UIImageView!
    @IBOutlet weak var backgroundImageView: UIImageView!

    override func awakeFromNib() {
        super.awakeFromNib()

        let regularBlur = UIBlurEffect(style: .regular)
        let blurView = UIVisualEffectView(effect: regularBlur)
        blurView.frame = backgroundImageView.bounds
        blurView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
        backgroundImageView.addSubview(blurView)

    }
}

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Изменение вашего кода:

class ImageCell: UICollectionViewCell {

    @IBOutlet weak var mainImageView: UIImageView!
    @IBOutlet weak var backgroundImageView: UIImageView!

    override func awakeFromNib() {
        super.awakeFromNib()

        backgroundImageView.isHidden = true
        let regularBlur = UIBlurEffect(style: .regular)
        let blurView = UIVisualEffectView(effect: regularBlur)
        blurView.frame = backgroundImageView.bounds
        blurView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
        backgroundImageView.addSubview(blurView)
        backgroundImageView.isHidden = false
    }
}
0 голосов
/ 29 августа 2018

Вы можете кодировать так:

class ImageCell: UICollectionViewCell {

@IBOutlet weak var mainImageView: UIImageView!
@IBOutlet weak var backgroundImageView: UIImageView!

let blurView = UIVisualEffectView(effect: UIBlurEffect(style: .regular))


override func awakeFromNib() {
    super.awakeFromNib()

    blurView.frame = backgroundImageView.bounds
    blurView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
    backgroundImageView.addSubview(blurView)
}

override func prepareForReuse() {
        blurView.isHidden = true
    }
}
...