문제

나는 텍스트를 채우고 텍스트 드로잉 모드를 클리핑하도록 설정 한 다음 그라디언트 요금을 페인트하는 그라디언트 요금으로 텍스트를 채우려고합니다. 문제는 텍스트 드로잉 모드를 클립으로 설정할 때마다 텍스트 문자열의 모든 문자가 단어를 형성하기 위해 순서대로 페인트되지 않고 서로 위에 놓여 있다는 것입니다.

내 코드는 다음과 같습니다.

CGRect r = CGRectInset(self.frame, 55, 8);      

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

CGFloat components[8] = {44/255, 54/255, 66/255, 1.0
            ,75/255, 92/255, 111/255, 1.0};
CGFloat locations[2] = {0, 1};

// draw the text's gradient fill
CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace, components, locations, 2);

CGContextSetTextDrawingMode(context, kCGTextClip);


[monthString drawInRect:r withFont:f lineBreakMode:UILineBreakModeWordWrap alignment:UITextAlignmentCenter];

CGContextFillRect(context, CGRectMake(0, 0, 320, 20));
도움이 되었습니까?

해결책

kcgtextclip 드로잉 모드와 잘 어울리지 않는 Uikit nsstring 첨가물은 kcgtextclip 드로잉 모드와 잘 어울리지 않는 것 같습니다. 나는 같은 행동을 보았습니다 이 답변 순수한 쿼츠 드로잉 호출을 사용하여 텍스트를 그라디언트로 채우는 코드를 제공합니다. 이 접근법의 단점은 많은 유니 코드 기호에 대한 지원이 부족한 Macroman 텍스트 인코딩으로 제한된다는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top