目前正在为客户处理别人的现有项目,但是在iOS14设备上有这个奇怪的问题,只有在每个具有模糊背景的屏幕看起来都不再模糊,而只是像一个低alpha值的透明灰色叠加图像。我尝试了各种方法,并在网上寻找,但仍然找不到这里的问题。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
animatedCircleView.alpha = 1
imvLogo.isHidden = false
// Hero
imvLogo.hero.id = "logo"
imvLogo.hero.modifiers = [.duration(self.animatedDuration)]
let blurEffect = (NSClassFromString("_UICustomBlurEffect") as! UIBlurEffect.Type).init()
blurEffect.setValue(8, forKeyPath: "blurRadius")
blurView = UIVisualEffectView(effect: blurEffect)
blurView.frame = UIScreen.main.bounds
blurView.alpha = 1
view.insertSubview(blurView, aboveSubview: imvBackground)
}这是在iOS13上模糊的背景之前的样子:


这是它现在在iOS14上的样子:


我也试着把代码改成这样,但它只给了我一个纯色的背景,而不是一个模糊的背景:
let blurEffect = UIBlurEffect(style: .light)
blurEffectView = UIVisualEffectView(effect: blurEffect)
blurEffectView.frame = UIScreen.main.bounds
blurEffectView.alpha = 0
view.insertSubview(blurEffectView, aboveSubview: viewUnder)这是它给我的纯色背景色:

如果有人能告诉我在iOS14中可能出了什么问题,或者是什么破坏了这个问题,那就太好了,以及我如何着手解决这个问题。谢谢。
更新:
我检查了视图层次结构,并在ios13上正确创建了UIVisualEffectBackdropView (见下图):

但ios14 UIVisualEffectBackdropView的创建不正确,只是获取背景图像并对其应用色彩,但没有模糊:

发布于 2020-10-07 22:17:19
@GameDev
实际上,这段代码使用的私有接口_UICustomBlurEffect从iOS 14起就不再起作用了。你必须依赖于一个常规的UIBlurEffect子类,但你将无法设置blurRadius...
https://stackoverflow.com/questions/64159083
复制相似问题