はじめに
人は誰しも,1度は理想と現実のギャップに苦しめられる。
例えば,UILabelにグラデーションを適用しようとした時などがそれに相当するだろう。
以下の2つの画像を見比べてみよう。理想は上だが,下が現実だ。


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のソフトウェアアーキテクチャ知ってるやつ全部書いたやつ [記事] とか 心理学実験できるやつ とかやってます。