如何得到类似苹果地图状态栏的模糊效果?

How to get blur effect similar to Apple maps status bar?

我正在开发一个基于地图 iOS 11 的应用程序,我想使状态栏变得模糊,就像它在 Apple 地图中出现的那样。

这是它在地图应用中的样子:

目前,我正在使用 UIVisualEffectView 复制这种效果。这是我的代码:

let blurEffect = UIBlurEffect(style: .regular)
blurredStatusBar = UIVisualEffectView(effect: blurEffect)
blurredStatusBar?.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(blurredStatusBar!)

但是,无论我使用什么 UIBlurEffect,我都无法复制像地图应用程序那样的效果。以下是不同效果的外观:

.常规

.prominent

.light

.extraLight

我只想模糊状态栏,不添加任何饱和度、鲜艳度或任何白色色调。

有一个实例 属性 - backgroundFilters,它可能对我有帮助,但不幸的是它不适用于 iOS.

上的图层

建议 here 的一种可能解决方案是捕获图像中的 UIView 内容,然后对其进行模糊处理并显示出来。但是,这对我来说不是一个可行的解决方案,因为我在状态栏下方有一张可以平移的地图。连续捕捉下面的地图作为图像并在平移地图时对其进行模糊处理是没有意义的。

我尝试使用 ILTranslucentView,它是 UIView 的一个小子类,提供原生 iOS 7+ 模糊(半透明)效果。 它是这样出现的:

我尝试了几种不同的方法,例如 this,但没有用。

你可以试试关注。

yourView.backgroundColor = UIColor.clear
let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.light)   // Or   UIBlurEffectStyle.dark    
let blurEffectView = UIVisualEffectView(effect: blurEffect)
blurEffectView.frame = viewAdvancefilter.blurredView.bounds
blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
yourView.addSubview(blurEffectView)

我找到了上述问题的解决方案。我用了VisualEffectView来达到效果。它允许您自定义 VisualEffectView 的颜色色调、模糊半径、模糊比例等属性。但是,应谨慎使用。它利用一个私有的 UIKit API 来发挥它的魔力;将此代码提交到 App Store 会增加被拒绝的风险!

您可以尝试使用 UIToolbar
它具有UINavigationBarUITabBar相同的模糊效果,而UIBlurEffect无法实现。