2011-09-07 4 views
0

x 및 y는 정수입니다.iOS는 CGcontextshowtextatpoint를 사용할 때 텍스트의 특정 글꼴에 대해 직사각형을 그립니다.

int theSize = [caption.text length]; 
CGContextShowTextAtPoint(context, x, y, [caption.text UTF8String], theSize); 

을하지만 특정 글꼴을 사용할 때 문자가 사각형으로 표시 : 나는 CGBitmapCreateContext를 사용하여 사용자 정의 만든 컨텍스트를 보낸 다음 ArialMT 같은 일반적인 글꼴을 사용할 때

다음 코드는 잘 작동합니다.

// supposedly a solution to glyphs problem 
CGContextSaveGState(context); 
CGContextSetRGBFillColor(context, 0, 0, 0, .5); 
[caption.text drawAtPoint:CGPointMake(x, y) withFont:caption.font]; 
CGContextRestoreGState(context); 

하지만 그건 단지 나에게 오류 제공 : 9월 7일 13시 33분 31초 ... : CGContextShowGlyphsWithAdvances : 그래서 다른 스택 오버플로 답변을 사용하는 CoreText 인 제안 일을 시도 무효 컨텍스트를 0x0

답변

0

사각형은 해당 글꼴에서 글리프를 사용할 수 없음을 의미합니다. -drawAtPoint:withFont:을 사용하면 글꼴 대체 문자를 사용하여 다른 글꼴을 사용하여 글리프를 그릴 수 있지만이 핵심 텍스트가 아니며 단지 UIStringDrawing입니다. 어쨌든 이것은 -drawAtPoint:withFont: 호출이 현재 UI 그래픽 컨텍스트 스택을 사용하지만 스택에없는 사용자 지정 컨텍스트를 사용하기 때문에 실패합니다. UIGraphicsBeginImageContext[WithOptions]()UIGraphicsEndImageContext()을 사용하여 CGContext를 만들고 파괴하거나 UIGraphicsPushContext()UIGraphicsPopContext()을 사용하여 컨텍스트를 스택에 추가 한 다음 나중에 제거하십시오.

또는 실제로 CoreGraphics와 같은 명시 적 컨텍스트를 사용하는 CoreText를 사용할 수도 있지만 더 많은 코드 라인이 될 것입니다.

관련 문제