LoginSignup
8
3

More than 5 years have passed since last update.

Swift3.0でCAGradientLayerが表示されない

Posted at

概要

UIViewにグラデーションを付けようとしました。
お決まり通り、CAGradienLayerでやろうとするもいくつかはまってしまいました。
でも色々調べた結果、原因が分かって、実装することが出来ました。

上手くいかなかったコード

他の記事を参考にそのまま書いたはずなのに、グラデーションが表示されない・・・

let startColor = UIColor.white
let endColor = UIColor.blue
let layer = CAGradientLayer()
layer.colors = [startColor, endColor]
view.layer.addSublayer(layer)

原因1:layer.frameの設定し忘れ

これをちゃんと書いてあげましょう

layer.frame = view.frame

原因2:UIColorじゃなくてCGColorを設定

.cgcolor をつけてあげましょう
なんとなくこれは、Swift3.0特有のものな気がしますが、
どうなのでしょうか・・・
CAGradientLayer.colorsの型を見たら、[Any]?でした。
[CGColor]?になってたら、こんなはまり方はしなくて済んだのになーって思いました。

let startColor = UIColor.white.cgcolor
let endColor = UIColor.blue.cgcolor

上手くいったコード

let startColor = UIColor.white.cgcolor
let endColor = UIColor.blue.cgcolor
let layer = CAGradientLayer()
layer.colors = [startColor, endColor]
layer.frame = view.frame
view.layer.addSublayer(layer)

まとめ

めでたしめでたし

8
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3