【问题标题】:Blur background no longer working in iOS14模糊背景不再适用于 iOS14
【发布时间】: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 创建不正确,只是获取背景图像并对其应用色调但没有模糊:

【问题讨论】:

  • UIVisualEffectView alpha 必须始终为 1:blurEffectView.alpha = 0
  • @aheze 是的,我也试过这个,并删除了代码中的所有 alpha 值更改,但还是一样。
  • 嗯......当你做view.insertSubview(blurEffectView, aboveSubview: viewUnder)时,上面有什么东西可能会阻挡模糊吗?
  • 没什么,我检查了背景图像视图之后的视图层次结构,最重要的是它显示了 UIVisualEffectView 和 _UIVisualEffectBackdropView。就是这样。
  • 好像是iOS14的bug,谁能确认一下?

标签: ios swift xcode ios14


【解决方案1】:

@GameDev

实际上,此代码使用自 iOS 14 起不再有效的私有 API _UICustomBlurEffect。 您必须依靠常规的 UIBlurEffect 子类,但您将无法设置 blurRadius...

【讨论】:

  • 是的,我发现了这一点,但是即使使用常规的 UIBlurEffect,如原始帖子中所见,它只会给出纯色而不是模糊。我发现解决此问题的唯一方法是使用第 3 方库,该库也使用私有 api,但进行了一些更改以使其在 iOS14 中工作。
猜你喜欢
  • 1970-01-01
  • 2020-01-10
  • 2015-08-29
  • 1970-01-01
  • 1970-01-01
  • 2018-04-24
  • 2021-01-15
  • 2017-07-17
  • 1970-01-01
相关资源
最近更新 更多