가로색 그라데이션을 내 텍스트의 색으로 사용하고 싶습니다. UILabel
. https://developer.apple.com/reference/quartzcore/cagradientlayer에 설명 된대로 CAGradientLayer
을 사용하고 있습니다. 그래디언트는 텍스트에 완벽하게 렌더링되지만 세로로 렌더링됩니다.UAGel의 CAGradientLayer를 회전 할 수 없습니다.
CATransform3DMakeRotation
설명 된 사과는 그라디언트를 회전시키지 않습니다.
this answer에서 회전 작업을하려면 먼저 CAGradientLayer
을보기 또는 다른 레이어에 추가해야한다고 나와 있습니다.
그래서 UILabel에 하위 레이어로 추가하고 렌더링 후에 제거하려고했지만 텍스트의 그라디언트가 변형되지는 않지만 그 위에 가로 그라데이션 사각형이 추가됩니다. UILabel은 90도 회전했습니다.
extension UILabel {
func addGradient() {
// Get size of the label
let size = CGSize(width: frame.width, height: frame.width)
let gradientLayer = CAGradientLayer()
gradientLayer.frame = CGRect(x: 0, y: 0, width: size.height, height: size.width)
gradientLayer.colors = [
UIColor.gradientBlue.cgColor,
UIColor.gradientPink.cgColor,
UIColor.gradientOrange.cgColor
]
// layer.addSublayer(gradientLayer)
gradientLayer.transform = CGAffineTransform
// This does not work
gradientLayer.transform = CATransform3DMakeRotation(CGFloat.pi/2, 0, 0, 1)
UIGraphicsBeginImageContext(size)
gradientLayer.render(in: UIGraphicsGetCurrentContext()!)
// Create UIImage from Gradient
let gradientImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
// gradientLayer.removeFromSuperlayer()
textColor = UIColor.init(patternImage: gradientImage!)
}
}
charme처럼 작동합니다. 정말 고마워요! 이것도 공식 문서의 힌트 여야합니다! 기꺼이 도움이 된 – fl034
:) – user1974368