Ennabah
Ennabah

Reputation: 2513

UIVisualEffect is not showing on UIView

I have a UIView and that a create programmatically, then I added as a subView to my viewController.view. However, The view is not affected with the blur. Here is my code:

let blurryView: UIView = {
    let blur = UIView()
    blur.backgroundColor = UIColor.yellow
    blur.alpha = 0.90
    let blurEffect = UIBlurEffect(style: .extraLight)
    let blurEffectView = UIVisualEffectView(effect: blurEffect)
    blur.addSubview(blurEffectView)
    blurEffectView.center = blur.center
    blurEffectView.frame = blur.bounds
    blur.translatesAutoresizingMaskIntoConstraints = false
    return blur
}()

func manageBlurView() {
    blurryView.widthAnchor.constraint(equalToConstant: 250).isActive = true
    blurryView.heightAnchor.constraint(equalToConstant: 250).isActive = true
    blurryView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    blurryView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
}

override func viewDidLoad() {
    super.viewDidLoad()

    view.addSubview(blurryView)
    manageBlurView()

}

Upvotes: 0

Views: 949

Answers (1)

Bogdan Farca
Bogdan Farca

Reputation: 4106

Add both the yellow background view and the blurred view directly as child of your main view :

    let backg = UIView(frame: self.view.frame)
    backg.backgroundColor = UIColor.yellow
    backg.alpha = 0.90

    self.view.addSubview(backg)

    // the blur effect
    let blurEffect = UIBlurEffect(style: .extraLight)
    let blurredEffectView = UIVisualEffectView(effect: blurEffect)

    blurredEffectView.frame = self.view.frame
    self.view.addSubview(blurredEffectView)

You could put the above code in viewDidLoad.

Upvotes: 1

Related Questions