ThimraTV/MoviaBox/Base/View/SPGradientLabel.swift
2025-04-27 14:44:48 +08:00

54 lines
1.2 KiB
Swift

//
// SPGradientLabel.swift
// MoviaBox
//
// Created by on 2025/4/27.
//
import UIKit
class SPGradientLabel: UILabel {
private(set) var gradientLayer: CAGradientLayer = {
//
let gradient = CAGradientLayer()
gradient.colors = [
UIColor.red.cgColor,
UIColor.blue.cgColor
]
gradient.startPoint = CGPoint(x: 0.5, y: 0)
gradient.endPoint = CGPoint(x: 0.5, y: 1)
gradient.locations = [0, 1]
return gradient
}()
override init(frame: CGRect) {
super.init(frame: frame)
layer.addSublayer(gradientLayer)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func layoutSubviews() {
super.layoutSubviews()
gradientLayer.frame = bounds
//
let textLayer = CATextLayer()
textLayer.string = attributedText ?? NSAttributedString(string: text ?? "")
textLayer.frame = bounds
textLayer.alignmentMode = .center
textLayer.contentsScale = UIScreen.main.scale
gradientLayer.mask = textLayer
}
}