iOS blur effect to ImageView with Swift

2019-03-31 15:54发布

问题:

I am trying to make simple iOS app. I need to make image view with blur effect. I found this code on Stack Overflow:

class BlurImageView: UIImageView {

  override func awakeFromNib() {
    super.awakeFromNib()
  }

  required init(coder aDecoder: NSCoder!){
      super.init(coder: aDecoder)   
      var blur:UIBlurEffect = UIBlurEffect(style: UIBlurEffectStyle.Light)
      var effectView:UIVisualEffectView = UIVisualEffectView (effect: blur)
      effectView.frame = frame
      addSubview(effectView)
  }
}

And I need to connect this class to my image_view, but I don't know how to do it. I try to do it in my view_did_load function in my ViewController (image_view is a outlet)

override func viewDidLoad() {
    super.viewDidLoad()
    image_view = BlurImageView()
}

but NSCoder required... What is it? maybe my way is a wrong way?

回答1:

You need to make your image_view an instance of BlurImageView, so in your view controller and where your image_view is an outlet, you need to make it an instance of BlurImageView and not an instance of an UIImageView.



回答2:

You don't need it. The reason why you're not seeing results is because you're attempting to initialize the class from a different initializer than the one you setup.

Try:

class BlurImageView: UIImageView {

    override func awakeFromNib() {
        super.awakeFromNib()
    }

    override init() {
        var blur:UIBlurEffect = UIBlurEffect(style: UIBlurEffectStyle.Light)
        var effectView:UIVisualEffectView = UIVisualEffectView (effect: blur)
        effectView.frame = frame
        addSubview(effectView)
    }
}