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.
}
}