Ios 从完成块访问UIVisualEffectView时发生EXC\u BAD\u访问异常崩溃
我正在使用Ios 从完成块访问UIVisualEffectView时发生EXC\u BAD\u访问异常崩溃,ios,swift,uiimageview,uivisualeffectview,Ios,Swift,Uiimageview,Uivisualeffectview,我正在使用UIVisualEffectView对UIImageView应用模糊效果 当我试图从完成块访问UIVisualEffectView时,我得到了崩溃EXC\u BAD\u访问 我也试着把代码放在主线程中,但是没有什么好的结果 这是我的密码 func addBlurEffectView(frame: CGRect, value: CGFloat) { if value != 0 { if let sub = self.subviews.compactMap({ $0
UIVisualEffectView
对UIImageView
应用模糊效果
当我试图从完成块访问UIVisualEffectView
时,我得到了崩溃EXC\u BAD\u访问
我也试着把代码放在主线程中,但是没有什么好的结果
这是我的密码
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()
}
}
}
这里,在上述代码中,模糊效果是全局变量,即
var blurEffect = (NSClassFromString("_UICustomBlurEffect") as! UIBlurEffect.Type).init()
注意:我在slider的valueChanged事件中也使用了这段代码,这一切都能很好地工作,但问题只有在我从完成块访问函数时才会出现
我在下面的线上看到了坠机
sub.frame=self.bounds
我不知道如何解决这个问题
谢谢 你为什么使用这种方法?您为什么不以通常的方式设置效果视图-例如@Paulw11谢谢您的回复!您的问题的答案是,我想随着滑块的变化增加和减少模糊效果值,这就是为什么我不以常规方式使用它的原因为什么您使用这种方法?您为什么不以通常的方式设置效果视图-例如@Paulw11谢谢您的回复!您的问题的答案是,我想随着滑块的变化增加和减少模糊效果值,这就是为什么我不以常规方式使用它的原因