Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.

Popup açıp arka planda kalan herşeyi blur yapmak

0 oy
299 kez görüntülendi
22, Ekim, 2015 ios development kategorisinde burhanaksendir tarafından soruldu
Şimdi birkaç uygulamada görüyorum bu bahsettiğim efekti. Çok etkileyici. Mesela şöyle bir görselle anlatayım fazla sözü uzatmadan:

https://uibanana.files.wordpress.com/2015/02/blur_light_box.gif

Buradaki gibi bit etkiyi nasıl elde edebilirim. Yardımcı olabilir misiniz?

1 cevap

+2 oy
23, Ekim, 2015 yasin tarafından cevaplandı
23, Ekim, 2015 burhanaksendir tarafından seçilmiş
 
En İyi Cevap

ios8 ve üzeri çalışıyorsanız UIVisualEffectView ve UIVisiualEffect'i kullanarak aşağıdaki kodla benzer etkileri alabilirsiniz. ios 8 altı için ilgili ekran görüntüsünü önce capture edip daha sonra internet'de bulabileceğiniz 3rd party blur effect algoritmalarını kullanarak blur efekti ekleyerek bir imageView içerisine mevcut ekran görüntüsünün önüne yerleştirerek aynı etkiyi elde edebilirsiniz. Ama tabi daha uğraştırıcıdır.

import UIKit

class ViewController: UIViewController {

    var visualEffectView:UIVisualEffectView?

    override func viewDidLoad() {
        super.viewDidLoad()

        if let sampleBakcgroundImage:UIImage = UIImage(named: "test_image.jpg") {
            var imageView:UIImageView = UIImageView(frame: self.view.frame)
            imageView.image = sampleBakcgroundImage
            self.view.insertSubview(imageView, atIndex: 0)

            let showHideButton:UIButton = UIButton.buttonWithType(UIButtonType.Custom) as! UIButton
            showHideButton.tag = 0
            showHideButton.frame = CGRectMake(10.0, 10.0, 200.0, 50.0)
            showHideButton.backgroundColor = UIColor.redColor()
            showHideButton.addTarget(self, action: "showHideToggle:", forControlEvents: UIControlEvents.TouchUpInside)
            showHideButton.setTitle("touch me", forState: UIControlState.Normal)
            showHideButton.titleLabel?.textAlignment = NSTextAlignment.Center
            self.view.insertSubview(showHideButton, atIndex: 2)
        }
    }


    func showHideToggle(button:UIButton) {
        if button.tag == 0 {
            button.tag = 1
            button.backgroundColor = UIColor.greenColor()
            if self.visualEffectView == nil {
                let blurEffect:UIVisualEffect = UIBlurEffect(style: UIBlurEffectStyle.Light)
                self.visualEffectView = UIVisualEffectView(effect: blurEffect)
                self.visualEffectView?.frame = self.view.frame
                self.visualEffectView?.alpha = 0
                self.view.insertSubview(self.visualEffectView!, atIndex: 1)
                UIView.animateWithDuration(0.2, animations: { () -> Void in
                    self.visualEffectView?.alpha = 1
                })
            }
        } else {

            if self.visualEffectView != nil {
                UIView.animateWithDuration(0.2, animations: { () -> Void in
                    self.visualEffectView?.alpha = 0
                }, completion: { (Bool) -> Void in
                    button.tag = 0
                    button.backgroundColor = UIColor.redColor()
                    self.visualEffectView?.removeFromSuperview()
                    self.visualEffectView = nil
                })
            }
        }
    }



    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}
23, Ekim, 2015 burhanaksendir tarafından yorumlandı
Süper. Çok teşekkür ederim.
...