概要
UILabel
の背景にグラデーションを設定する時のメモです。
実装
カスタムのUILabelを作成しました。
以下のコードでラベルにグラデーションを設定できます。
画像のような感じになります。
また、ラベルの周りに適当なサイズの余白を加えました。

GradationLabel.swift
class GradientLabel: UILabel {
override class var layerClass: AnyClass {
return CAGradientLayer.self
}
override init(frame: CGRect) {
super.init(frame: frame)
translatesAutoresizingMaskIntoConstraints = false
textAlignment = .center
textColor = .white
text = "hoge"
if let gradientLayer = layer as? CAGradientLayer {
gradientLayer.colors = [
UIColor.systemPurple.cgColor,
UIColor.systemPink.cgColor,
]
gradientLayer.startPoint = CGPoint(x: 0, y: 0)
gradientLayer.endPoint = CGPoint(x: 1, y: 1)
}
layer.cornerRadius = 2
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override var intrinsicContentSize: CGSize {
var intrinsicContentSize = super.intrinsicContentSize
intrinsicContentSize.height += 4
intrinsicContentSize.width += 4
return intrinsicContentSize
}
}