【问题标题】:How give gradient on text in TextView iOS?如何在 TextView iOS 中对文本进行渐变?
【发布时间】:2020-01-28 22:30:15
【问题描述】:

当我尝试使用渐变层时,我想对 UITextView 中的文本进行渐变效果,并将其应用于完整的 textview 背景。我只是希望它应用于文本和背景 coloraturas 应该分开。

我想要这样的输出:

它的到来是这样的:

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

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

【问题讨论】:

标签: ios swift uitextview


【解决方案1】:

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

请检查以下示例。您可以在 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)

输出:-

【讨论】:

  • 感谢@Manikandan,是的,它为我工作,我对解决方案非常满意
【解决方案2】:

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

有一个很好的教程here

【讨论】:

  • 我可以提供 UILabel,但应用程序中使用的组件是 UITextView,所以我正在寻找文本视图的解决方案
  • 这当然也适用于 UITextView @TarunSeera
猜你喜欢
  • 2013-01-20
  • 1970-01-01
  • 2012-12-19
  • 2022-11-13
  • 2012-12-02
  • 2014-06-05
  • 1970-01-01
  • 1970-01-01
  • 2013-10-13
相关资源
最近更新 更多