Adding blur effect to background in swift

前端 未结 11 1809
鱼传尺愫
鱼传尺愫 2020-11-29 14:50

I am setting a background image to view controller. But also i want to add blur effect to this background. How can I do this?

I am setting background with following

相关标签:
11条回答
  • 2020-11-29 15:13

    You can make an extension of UIImageView.

    Swift 2.0

    import Foundation
    import UIKit
    
    extension UIImageView
    {
        func makeBlurImage(targetImageView:UIImageView?)
        {
            let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Dark)
            let blurEffectView = UIVisualEffectView(effect: blurEffect)
            blurEffectView.frame = targetImageView!.bounds
    
            blurEffectView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] // for supporting device rotation
            targetImageView?.addSubview(blurEffectView)
        }
    }
    

    Usage:

    override func viewDidLoad()
    {
        super.viewDidLoad()
    
        let sampleImageView = UIImageView(frame: CGRectMake(0, 200, 300, 325))
        let sampleImage:UIImage = UIImage(named: "ic_120x120")!
        sampleImageView.image =  sampleImage
    
        //Convert To Blur Image Here
        sampleImageView.makeBlurImage(sampleImageView)
    
        self.view.addSubview(sampleImageView)
    }
    

    Swift 3 Extension

    import Foundation
    import UIKit
    
    extension UIImageView
    {
        func addBlurEffect()
        {
            let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.light)
            let blurEffectView = UIVisualEffectView(effect: blurEffect)
            blurEffectView.frame = self.bounds
    
            blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight] // for supporting device rotation
            self.addSubview(blurEffectView)
        }
    }
    

    Usage:

    yourImageView.addBlurEffect()
    

    Addendum:

    extension UIView {
    
      /// Remove UIBlurEffect from UIView
      func removeBlurEffect() {
        let blurredEffectViews = self.subviews.filter{$0 is UIVisualEffectView}
        blurredEffectViews.forEach{ blurView in
          blurView.removeFromSuperview()
        }
      }
    
    0 讨论(0)
  • 2020-11-29 15:13

    @AlvinGeorge should just use:

    extension UIImageView{        
        func blurImage()
        {
            let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Dark)
            let blurEffectView = UIVisualEffectView(effect: blurEffect)
            blurEffectView.frame = self.bounds
    
            blurEffectView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] // for supporting device rotation
            self.addSubview(blurEffectView)
        }
    }
    

    usage:

     blurredBackground.frame = self.view.bounds
     blurredBackground.blurImage()
     self.view.addSubview(self.blurredBackground)
    
    0 讨论(0)
  • 2020-11-29 15:13

    This Code is Working Fine For me! its for Swift 4.x

    let blurEffect = UIBlurEffect(style: .ExtraLight)
    let blurEffectView = UIVisualEffectView(effect: blurEffect)
    blurEffectView.frame = self.view.frame
    self.view.insertSubview(blurEffectView, atIndex: 0)
    
    0 讨论(0)
  • 2020-11-29 15:13

    Found another way.. I use apple's UIImage+ImageEffects.

     UIImage *effectImage = [image applyExtraLightEffect];                        
     self.imageView.image = effectImage;
    
    0 讨论(0)
  • 2020-11-29 15:14

    In a UIView extension:

    func addBlurredBackground(style: UIBlurEffect.Style) {
        let blurEffect = UIBlurEffect(style: style)
        let blurView = UIVisualEffectView(effect: blurEffect)
        blurView.frame = self.frame
        blurView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
        self.addSubview(blurView)
        self.sendSubviewToBack(blurView)
    }
    
    0 讨论(0)
  • 2020-11-29 15:16

    You should always use .dark for style and add the following code to make it look cool

        blurEffectView.backgroundColor = .black
        blurEffectView.alpha = 0.4
    
    0 讨论(0)
提交回复
热议问题