我想在UITextView中对文本给予渐变效果,当我尝试使用渐变层时,其应用于完整的textview背景。我只想将其应用于文本和背景coloratura应分开。我想要这样的输出:
它是这样来的:
有人可以建议如何实现输出像第一个图像上UITextView
我专门为UITextView寻找解决方案,而不是UILabel或UIView
jjhzyzn01#
您可以为文本创建图案颜色。因此,您可以将此颜色应用于任何文本组件(如标签,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)
输出:-
qnyhuwrf2#
实现此目的最简单的方法是在UILabel或UITextView上创建具有所需渐变的UIView,然后将渐变UIView遮罩在textView上。有一个很好的教程here。
dy2hfwbg3#
您可以使用这两种方法中的任何一种为任何内容(即UILabel的文本,边框,背景,UITextView的文本,UIView或几乎所有内容)给予渐变色。
UIColor.fromGradient(GradientLayer, frame: CGRect) UIColor.fromGradientWithDirection(GradientDirection, frame: CGRect, colors: [colors])
对于第一种方法,您需要创建渐变层,并像下面这样将其与UITextView的rect一起传递
let gradient = GradientLayer(direction: .leftToRight, colors: [.red, .green], locations: [0, 1]) yourTextView.textColor = UIColor.fromGradient(gradient, frame: yourTextView.bounds)
对于第二个方法,只需像这样传递这些参数
youtTextView.textColor = UIColor.fromGradientWithDirection(.leftToRight, frame: youtTextView.bounds, colors: [.green, .yellow, .red])
B:对于这两种情况,如果你改变了你的框架,你也必须更新你的渐变。这意味着在你的textView每次改变之后,你必须用你更新的框架设置渐变,否则以前的渐变会重复。
3条答案
按热度按时间jjhzyzn01#
您可以为文本创建图案颜色。因此,您可以将此颜色应用于任何文本组件(如标签,textView,按钮等)。
请查看下面的示例。您可以在getGradientLayer()方法中自定义颜色模式。
输出:-
qnyhuwrf2#
实现此目的最简单的方法是在UILabel或UITextView上创建具有所需渐变的UIView,然后将渐变UIView遮罩在textView上。
有一个很好的教程here。
dy2hfwbg3#
您可以使用这两种方法中的任何一种为任何内容(即UILabel的文本,边框,背景,UITextView的文本,UIView或几乎所有内容)给予渐变色。
对于第一种方法,您需要创建渐变层,并像下面这样将其与UITextView的rect一起传递
对于第二个方法,只需像这样传递这些参数
B:对于这两种情况,如果你改变了你的框架,你也必须更新你的渐变。这意味着在你的textView每次改变之后,你必须用你更新的框架设置渐变,否则以前的渐变会重复。