035 UIViewにBlurエフェクトを適用させる

Swift3.0に対応した新サイトオープンしました。
http://docs.fabo.io/swift/


Preview


    

Source

ViewController.swift

//

//  ViewController.swift

//  UIKit035

//


import UIKit


class ViewController: UIViewController {

    

    private var effectView : UIVisualEffectView!

    private var mySegcon : UISegmentedControl!

    

    override func viewDidLoad() {

        

        super.viewDidLoad()

        

        // 背景画像を生成.

        let image = UIImage(named: "ci005")

        let imageView = UIImageView(frame: self.view.bounds)

        imageView.image = image

        self.view.addSubview(imageView)

        

        // SegmentedControlを生成.

        mySegcon = UISegmentedControl(items: ["Dark", "ExtraLight", "Light"])

        mySegcon.center = CGPointMake(self.view.center.x, self.view.bounds.maxY - 50)

        mySegcon.backgroundColor = UIColor.grayColor()

        mySegcon.tintColor = UIColor.whiteColor()

        mySegcon.addTarget(self, action: "onClickMySegmentedControl:", forControlEvents: UIControlEvents.ValueChanged)

        self.view.addSubview(mySegcon)

    }

    

    /*

    エフェクトを適用する.

    */

    internal func addVirtualEffectView(effect : UIBlurEffect!){

        

        if effectView != nil {

            effectView.removeFromSuperview()

        }

        

        // Blurエフェクトを適用するEffectViewを作成.

        effectView = UIVisualEffectView(effect: effect)

        effectView.frame = CGRectMake(0, 0, 200, 400)

        effectView.layer.position = CGPointMake(mySegcon.bounds.midX, -(effectView.frame.midY + 20) )

        effectView.layer.masksToBounds = true

        effectView.layer.cornerRadius = 20.0

        mySegcon.addSubview(effectView)

    }

    

    /*

    SegmentedControlの値が変わった時に呼び出されるメソッド.

    */

    internal func onClickMySegmentedControl(sender : UISegmentedControl){

        

        var effect : UIBlurEffect!

        

        switch sender.selectedSegmentIndex {

            

        case 0:

            // LightBlurエフェクトを作る.

            effect = UIBlurEffect(style: UIBlurEffectStyle.Dark)

            

        case 1:

            // DarkBlurエフェクトを作る.

            effect = UIBlurEffect(style: UIBlurEffectStyle.Light)

            

        case 2:

            // ExtraLightBlurエフェクトを作る.

            effect = UIBlurEffect(style: UIBlurEffectStyle.ExtraLight)

            

        default:

            println("Error")

        }

        

        self.addVirtualEffectView(effect)

    }

}


Reference

    UIVisualEffectView Class

    UISegmentedControl Class

    UIBlurEffect Class

    UIVisualEffectView Class


Comments