iPhone에서 Quartz를 사용하여 텍스트를 표시하는 방법은 무엇입니까?
-
02-07-2019 - |
문제
나는 석영 컨텍스트를 사용하여 텍스트를 표시하려고 노력했지만, 내가 시도한 내용에 관계없이 단순히 텍스트를 표시 할 운이 좋지 않았습니다 (그래도 모든 종류의 다른 쿼츠 개체를 표시 할 수 있습니다). 내가 뭘 잘못하고 있는지 아는 사람 있나요?
예시:
-(void)drawRect:(CGRect)rect
{
// Drawing code
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSelectFont(context, "Arial", 24, kCGEncodingFontSpecific);
CGContextSetTextPosition(context,80,80);
CGContextShowText(context, "hello", 6);
//not even this works
CGContextShowTextAtPoint(context, 1,1, "hello", 6);
}
해결책
다음은 내가 사용하는 코드 조각입니다.
UIColor *mainTextColor = [UIColor whiteColor];
[mainTextColor set];
drawTextLjust(@"Sample Text", 8, 50, 185, 18, 16);
그리고:
static void drawTextLjust(NSString* text, CGFloat y, CGFloat left, CGFloat right,
int maxFontSize, int minFontSize) {
CGPoint point = CGPointMake(left, y);
UIFont *font = [UIFont systemFontOfSize:maxFontSize];
[text drawAtPoint:point forWidth:right - left withFont:font
minFontSize:minFontSize actualFontSize:NULL
lineBreakMode:UILineBreakModeTailTruncation
baselineAdjustment:UIBaselineAdjustmentAlignBaselines];
}
다른 팁
알았어, 나는 그것을 얻었다. 먼저 인코딩 모드를 Kcgencodingmacroman으로 변경하십시오. 둘째, 그 아래 에이 줄을 삽입하십시오.
CGContextSetTextMatrix(canvas, CGAffineTransformMake(1, 0, 0, -1, 0, 0));
이것은 올바르게 그려 지도록 텍스트의 변환 매트릭스를 설정합니다. 해당 라인을 넣지 않으면 텍스트가 뒤집어지고 앞쪽으로 돌아갑니다. 왜 이것이 기본값이 아니 었는지 모르겠습니다. 마지막으로 올바른 채우기 색상을 설정해야합니다. 배경 색상에서 텍스트 색상으로 바꾸는 것을 잊고 흰색 흰색 텍스트로 끝나는 것을 잊어 버리는 것은 쉬운 실수입니다.
제휴하지 않습니다 StackOverflow