Доступ к UIVisualEffectView из блока завершения завершается с исключением EXC_BAD_ACCESS - PullRequest
1 голос
/ 01 февраля 2020

Я применяю эффект размытия к UIImageView, используя UIVisualEffectView.

Когда я пытаюсь получить доступ к UIVisualEffectView из блока завершения, я получаю cra sh EXC_BAD_ACCESS.

Я также пытался поместить код в основной поток, но ничего не получается с этим

Вот мой код

func addBlurEffectView(frame: CGRect, value: CGFloat) {
    if value != 0 {
        if let sub = self.subviews.compactMap({ $0 as? UIVisualEffectView }).first {
            print("Blur effect view exists")
            sub.frame = self.bounds
            self.blurEffect.setValue(value/10, forKeyPath: "blurRadius")
            sub.effect = self.blurEffect
        } else {
            print("Blur effect view doesn't exist")
            self.blurEffect = (NSClassFromString("_UICustomBlurEffect") as! UIBlurEffect.Type).init()
            let blurView = UIVisualEffectView(frame: /*UIScreen.main.bounds*/frame)
            self.blurEffect.setValue(value/10, forKeyPath: "blurRadius")
            blurView.effect = self.blurEffect
            blurView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
            self.addSubview(blurView)
        }
    } else {
        if let sub = self.subviews.compactMap({ $0 as? UIVisualEffectView }).first {
            sub.removeFromSuperview()
        }
    }
}

Здесь, в приведенном выше коде, blurEffect - глобальная переменная, т. Е.

var blurEffect = (NSClassFromString("_UICustomBlurEffect") as! UIBlurEffect.Type).init()

Примечание: Я использую этот код также с событием valueChanged ползунка, с этим все отлично работает, но проблема возникает только когда я получаю доступ к функции из блока завершения

Я получаю cra sh в строке ниже

sub.frame = self.bounds

Понятия не имею, как решить эту проблему

Спасибо !!

...