LoginSignup
18
9

More than 5 years have passed since last update.

UILabelへ簡単にグラデーションを適用する方法

Posted at

はじめに

人は誰しも,1度は理想と現実のギャップに苦しめられる。

例えば,UILabelにグラデーションを適用しようとした時などがそれに相当するだろう。

以下の2つの画像を見比べてみよう。理想は上だが,下が現実だ。

Simulator Screen Shot - iPhone 8 Plus - 2018-09-02 at 22.33.24.png
Simulator Screen Shot - iPhone 8 Plus - 2018-09-02 at 22.34.55.png

UIViewのグラデーションの知見,即ちCAGradientLayerをそのままUILabelに適用しようと考えた浅はかな人間がこの世には存在する。そう,筆者である。

こと人間に限ったことではないが,幸いにも人間には学習能力がある。余談だが筆者は大学時代学習について研究していた。
大学で学んだことを活かせない愚かな私に代わって,誠実で賢い諸君らはどうかこのような失態を犯さぬようここにレポートをまとめておく。役立つ機会が訪れることをここに願う。

レポート

【結論】UIViewにグラデーションを適用し,UILabelでマスクする。

let frame: CGRect = /* foo */
let view: UIView = UIView(frame: frame)
let label: UILabel = UILabel(frame: frame)

label.text = /* bar */
// ViewにLabelを追加する
view.addSubView(label)

// CAGradientLayerによるグラデーションの適用
let gradientLayer: CAGradientLayer = CAGradientLayer()
gradientLayer.frame = view.bounds
gradientLayer.colors = [
    /* UIColor */
]
// グラデーション方向の指定 (以下は縦方向)
gradientLayer.startPoint = CGPoint(x: 0.5, y: 0)
gradientLayer.endPoint = CGPoint(x: 0.5, y: 1.0)

// Viewに対してグラデーションを適用させる
view.layer.insertSublayer(self.gradientLayer, at: 0)

// ViewをLabelでマスクする
view.mask = label

以上。

参考

宣伝

CiNiiのAPIクライアント とか iOSのソフトウェアアーキテクチャ知ってるやつ全部書いたやつ [記事] とか 心理学実験できるやつ とかやってます。

18
9
0

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
18
9