extension UIColor {
static let gradientTextLink: UIColor = {
let gradientLayer = CAGradientLayer.init(frame: CGRect.init(x: 0, y: 0, width: screenWidth, height: 16), colors: [rgba(104, 104, 167, 1),rgba(159, 32, 87, 1)], startPoint: CGPoint.init(x: 0.5, y: 0), endPoint: CGPoint.init(x: 0.5, y: 1))
let linkColor = gradientLayer.outputColor() ?? UIColor.red
return linkColor
}()
}
extension CAGradientLayer {
public convenience init(frame:CGRect,colors: [UIColor],locations:[NSNumber] = [0,1],startPoint:CGPoint = CGPoint.init(x: 0, y: 0.5),endPoint:CGPoint = CGPoint.init(x: 1, y: 0.5)) {
//创建渐变层对象
self.init()
self.frame = frame
//将存储的渐变色数组(UIColor类)转变为CAGradientLayer对象的colors数组,并设置该数组为CAGradientLayer对象的colors属性
var gradientColors: [CGColor] = [];
for item in colors {
gradientColors.append(item.cgColor)
}
self.colors = gradientColors
self.locations = locations
self.startPoint = startPoint
self.endPoint = endPoint
}
}
extension CALayer {
open func outputImage() -> UIImage? {
UIGraphicsBeginImageContextWithOptions(self.frame.size, self.isOpaque, 0)
guard let currentContext = UIGraphicsGetCurrentContext() else {
return nil
}
self.render(in: currentContext )
let ouputImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return ouputImage
}
open func outputColor() -> UIColor? {
guard let image = self.outputImage() else {
return nil
}
return UIColor.init(patternImage: image)
}
}
self.label.textColor = UIColor.gradientTextLink
网友评论