3

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?

Shruti Thombre
  • 989
  • 4
  • 11
  • 27
mr_ivan777
  • 401
  • 1
  • 10
  • 17

2 Answers2

5

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)
    }
}
jakenberg
  • 2,125
  • 20
  • 38
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.

BHendricks
  • 4,423
  • 6
  • 32
  • 59