如何减少对UIVisualEffectView的模糊效果

时间:2018-03-12 15:14:00

标签: ios swift uivisualeffectview uiblureffect

如何减少UIVisualEffectView上的模糊效果它给了我光,extraLight和dark的选项,这对我来说不够好我想要实现这样的事情  enter image description here

3 个答案:

答案 0 :(得分:1)

我们完全可以使用动画师以正确的预期外观做到这一点

用法:

let blurEffectView = BlurEffectView()
view.addSubview(blurEffectView)

BlurEffectView 实现:

class BlurEffectView: UIVisualEffectView {
    
    var animator = UIViewPropertyAnimator(duration: 1, curve: .linear)
    
    override func didMoveToSuperview() {
        guard let superview = superview else { return }
        backgroundColor = .clear
        frame = superview.bounds //Or setup constraints instead
        setupBlur()
    }
    
    private func setupBlur() {
        animator.stopAnimation(true)
        effect = nil

        animator.addAnimations { [weak self] in
            self?.effect = UIBlurEffect(style: .dark)
        }
        animator.fractionComplete = 0.1   //This is your blur intensity in range 0 - 1
    }
    
    deinit {
        animator.stopAnimation(true)
    }
}

答案 1 :(得分:0)

我知道这已经很晚了,但是如果您只是在模态演示中使用模糊,则Apple有一个内置的UIModalPresentationStyle,称为blurOverFullScreen,效果很好。

只需将父控制器的modalPresentationStyle设置为.blurOverFullScreen并显示新的视图控制器。如果新视图的尺寸小于屏幕,则应模糊背景,就像在图片中看到的那样。

答案 2 :(得分:0)

没有官方的方法来改变模糊程度。

但是,您可以尝试以下操作:

Create a custom blur view