如何在 TextView iOS 中对文本进行渐变?

How give gradient on text in TextView iOS?

我想在 UITextView 中对文本赋予渐变效果,当我尝试使用渐变层时,它应用于完整的 textview 背景。我只是希望它应用于文本和背景颜色应该分开。

我想要这样的输出:

它的到来是这样的:

有人可以建议如何在 UITextView 上实现像第一张图片那样的输出

我正在专门寻找 UITextView 的解决方案,而不是 UILabel 或 UIView

实现此目的的最简单方法是在 UILabel 或 UITextView 上创建具有所需渐变的 UIView,然后在 textView 上屏蔽渐变 UIView。

有一个很好的教程here

您可以为文本创建图案颜色。因此,您可以将此颜色应用于任何文本组件(如标签、文本视图、按钮等)。

请检查以下示例。您可以在 getGradientLayer() 方法中自定义您的颜色模式。

func gradientColor(bounds: CGRect, gradientLayer :CAGradientLayer) -> UIColor? {
//We are creating UIImage to get gradient color.
      UIGraphicsBeginImageContext(gradientLayer.bounds.size)
      gradientLayer.render(in: UIGraphicsGetCurrentContext()!)
      let image = UIGraphicsGetImageFromCurrentImageContext()
      UIGraphicsEndImageContext()
      return UIColor(patternImage: image!)
}
func getGradientLayer(bounds : CGRect) -> CAGradientLayer{
    let gradient = CAGradientLayer()
    gradient.frame = bounds
    gradient.colors = [UIColor.red.cgColor, UIColor.blue.cgColor]
    gradient.startPoint = CGPoint(x: 0.0, y: 0.5)
    gradient.endPoint = CGPoint(x: 1.0, y: 0.5)
    return gradient
}

let textView = UITextView(frame: CGRect(x: 0, y: 0, width: 400, height: 400))
textView.font = UIFont.boldSystemFont(ofSize:50)
textView.textAlignment = .center
textView.text = "Hello World!"
let gradient = getGradientLayer(bounds: textView.bounds)
textView.textColor = gradientColor(bounds: textView.bounds, gradientLayer: gradient)

输出:-