Как придать градиент тексту в TextView iOS? - PullRequest
1 голос
/ 28 января 2020

Я хотел бы дать эффект градиента для текста в UITextView, когда я пытаюсь использовать слой градиента, примененный к полному фону просмотра текста. Я просто хочу, чтобы он был применен к тексту, а фоновые колоратуры должны отделяться.

Я хочу вывод, подобный этому:

enter image description here

И его вот так:

enter image description here

Может кто-нибудь подсказать, как добиться вывода, как первое изображение на UITextView

Я специально ищу решение для UITextView, вместо UILabel или UIView

Ответы [ 2 ]

2 голосов
/ 28 января 2020

Вы можете создать узорной цвет для вашего текста. Таким образом, вы можете применить этот цвет к любому текстовому компоненту (например, метка, textView, кнопка и т. Д. c).

Пожалуйста, проверьте приведенный ниже пример. где вы можете настроить свой цветовой узор в методе 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)

Вывод: -

enter image description here

2 голосов
/ 28 января 2020

Самый простой способ добиться этого - создать UIView с желаемым градиентом поверх UILabel или UITextView, а затем замаскировать градиент UIView поверх textView.

Здесь есть хороший учебник .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...