我正在使用基于地图的iOS 11应用程序,希望使状态栏变得完全模糊,就像它在Apple地图中一样。
当前,我正在使用UIVisualEffectView复制此效果。这是我的代码:
let blurEffect = UIBlurEffect(style: .regular)
blurredStatusBar = UIVisualEffectView(effect: blurEffect)
blurredStatusBar?.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(blurredStatusBar!)
但是,无论我使用什么UIBlurEffect,我都无法复制类似于Maps应用程序的效果。这就是它寻找不同效果的方式:
我只想模糊状态栏,而不添加任何饱和度,鲜艳度或任何白色色调。
有一个实例属性-backgroundFilters,可能对我有帮助,但不幸的是,它不适用于iOS上的图层。
建议here的一种可能的解决方案是将UIView内容捕获到图像中,然后对其进行模糊处理并显示出来。但是,在我的情况下,这不是可行的解决方案,因为在状态栏下方有一个可以平移的地图。连续捕获下面的地图作为图像并在平移地图时对其进行模糊化是没有意义的。
我尝试使用ILTranslucentView,它是UIView的一个小子类,可提供本机iOS 7+模糊(半透明)效果。 看起来是这样的:
我尝试了几种不同的方法,例如this,但没有用。
答案 0 :(得分: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)
答案 1 :(得分:0)
我找到了解决上述问题的方法。我用VisualEffectView来达到效果。它使您可以自定义诸如colortint,blurRadius,VisualEffectView的模糊比例的属性。但是,应谨慎使用。它利用私有的UIKit API来发挥作用。将此代码提交到App Store会增加被拒绝的风险!
答案 2 :(得分:0)
您可以尝试使用 UIToolbar
。
它具有与 UINavigationBar
和 UITabBar
相同的模糊效果,这是 UIBlurEffect
无法实现的。