2017-05-01 10 views
1

가로색 그라데이션을 내 텍스트의 색으로 사용하고 싶습니다. 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!) 
} 
} 

답변

1

당신이 대각선 그라데이션을 위해

gradientLayer.startPoint = CGPoint.init(x: 0, y: 0) 
    gradientLayer.endPoint = CGPoint.init(x: 1, y: 1) 

를 사용할 수 있습니다

여기 내 코드입니다. 당신은 다른 점수를 얻고 싶지만 그 점수로 플레이 할 수 있습니다.

+0

charme처럼 작동합니다. 정말 고마워요! 이것도 공식 문서의 힌트 여야합니다! 기꺼이 도움이 된 – fl034

+0

:) – user1974368