概要
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)
まとめ
めでたしめでたし