Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.
0 oy
764 kez görüntülendi
ios development kategorisinde tarafından
Ş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
tarafından
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.
    }


}
tarafından
Süper. Çok teşekkür ederim.
...