透明模糊视图不起作用

时间:2016-12-07 13:24:43

标签: ios swift uiimageview uiblureffect

我想在ImageView上应用稍微模糊的图层。 我在imageView的顶部放置了一个视图,将其子类化如下:

class BlurredView: UIView {
override func draw(_ rect: CGRect) {
    self.backgroundColor = UIColor.clear
    let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.extraLight)
    let blurEffectView = UIVisualEffectView(effect: blurEffect)
    blurEffectView.backgroundColor = UIColor.clear
    blurEffectView.frame = self.bounds
    blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    self.addSubview(blurEffectView)
   }
}

结果与我的预期完全不同。

https://helpx.adobe.com/experience-manager/using/custom_columns.html

如何自定义它以使这种模糊更轻,所以图片仍然显示一些细节?

2 个答案:

答案 0 :(得分:0)

正如评论中提到的https://stackoverflow.com/users/1387306/chrstpsln,这可以通过更改 UIVisualEffectView 的 alpha 来实现。

作为奖励,您可以添加淡入淡出动画以使过渡感觉更平滑。

这是一个如何通过扩展将这种效果添加到任何视图控制器的示例:

extension UIViewController {
    func addBlurEffect() {
        let blurEffect = UIBlurEffect(style: .light)

        let blurVisualEffectView = UIVisualEffectView(effect: blurEffect)
        blurVisualEffectView.frame = UIScreen.main.bounds


        blurVisualEffectView.alpha = 0.1

        // Bonus animation - Or just set the alpha higher
        UIView.animate(withDuration: 0.3) {
            blurVisualEffectView.alpha = 0.90
        }

        view.addSubview(blurVisualEffectView)
    }
}

用法:

let viewController = UIViewController() 
viewController.addBlurEffect()

答案 1 :(得分:-2)

您无法更改模糊量,您唯一可以做的就是更改模糊效果样式:

UIBlurEffectStyle.light
UIBlurEffectStyle.extraLight
UIBlurEffectStyle.dark

尝试更改模糊效果alpha。此外,由于您的图像很亮,您应该使用灯光样式而不是额外的灯光,以免丢失细节。

let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.light)
blurEffect.alpha = 0.95