5

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

这是它在地图应用程序上的外观: 在此处输入图像描述

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

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

但是,无论我使用什么 UIBlurEffect,我都无法像 Maps 应用一样复制效果。以下是它寻找不同效果的方式:

。常规的 在此处输入图像描述

。著名的 在此处输入图像描述

。光 在此处输入图像描述

.extraLight 在此处输入图像描述

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

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

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

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

在此处输入图像描述

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

4

3 回答 3

2

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

于 2018-09-07T09:10:19.347 回答
0

你可以尝试使用UIToolbar. 它具有与和无法实现
的相同的模糊效果。UINavigationBarUITabBarUIBlurEffect

于 2021-01-19T07:37:39.193 回答
0

您可以尝试关注。

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)
于 2018-08-31T11:44:06.930 回答