swiftでグラデーションがかかったViewを作成する[CAGradientLayer][swift3.0]
今回はグラデーションがかかったViewを作成したいと思います。
現在作成中のアプリで使っていたのですが、ちょっといらないかも...と感じまして、消してしまう前に記録に残しておきます。
githubは以下です。
▶︎GitHub - anthrgrnwrld/gradationView
コードを以下に貼っておきます
class ViewController: UIViewController { @IBOutlet weak var gradationView: UIView! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. let gradient = CAGradientLayer() gradient.frame = self.view.bounds let color_1 = UIColor(red: 1.0, green: 0.7, blue: 0.7, alpha: 1.0).cgColor let color_2 = UIColor(red: 0.7, green: 1.0, blue: 0.7, alpha: 1.0).cgColor let color_3 = UIColor(red: 0.7, green: 0.7, blue: 1.0, alpha: 1.0).cgColor gradient.colors = [color_1, color_2, color_3] let position_1 = NSNumber(value: 0.0 as Float) let position_2 = NSNumber(value: 0.5 as Float) let position_3 = NSNumber(value: 1.0 as Float) gradient.startPoint = CGPoint(x: 0.0, y: 0.0) gradient.endPoint = CGPoint(x: 1.0, y: 1.0) gradient.locations = [position_1, position_2, position_3] self.gradationView.layer.insertSublayer(gradient, at: 0) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
処理イメージ
これ書いたの結構前で参考にしたページも忘れてしまいましたが、以下のような処理のイメージです。
(前提方針) CAGradientLayerクラスのインスタンスを色々処理した後に対象のViewのLayerへ代入する。
- CAGradientLayerのインスタンスを作成し、その大きさを定義する。
- グラデーションする色を決定。いくつ作成しても良い。
- グラデーションの開始及び終了の位置、2で決定した色を開始する位置などを決定する。1で決定したサイズを1.0として。
- 対象Viewの.layerへ作成・編集したCAGradientLayerのインスタンスを入れる。
以上です。