【发布时间】:2020-10-21 11:23:22
【问题描述】:
目前正在为客户处理其他人的现有项目,但是在 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 创建不正确,只是获取背景图像并对其应用色调但没有模糊:
【问题讨论】:
-
UIVisualEffectViewalpha 必须始终为 1:blurEffectView.alpha = 0 -
@aheze 是的,我也试过这个,并删除了代码中的所有 alpha 值更改,但还是一样。
-
嗯......当你做
view.insertSubview(blurEffectView, aboveSubview: viewUnder)时,上面有什么东西可能会阻挡模糊吗? -
没什么,我检查了背景图像视图之后的视图层次结构,最重要的是它显示了 UIVisualEffectView 和 _UIVisualEffectBackdropView。就是这样。
-
好像是iOS14的bug,谁能确认一下?