iPhone에서 Quartz를 사용하여 텍스트를 표시하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/143215

  •  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));

이것은 올바르게 그려 지도록 텍스트의 변환 매트릭스를 설정합니다. 해당 라인을 넣지 않으면 텍스트가 뒤집어지고 앞쪽으로 돌아갑니다. 왜 이것이 기본값이 아니 었는지 모르겠습니다. 마지막으로 올바른 채우기 색상을 설정해야합니다. 배경 색상에서 텍스트 색상으로 바꾸는 것을 잊고 흰색 흰색 텍스트로 끝나는 것을 잊어 버리는 것은 쉬운 실수입니다.

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