두 개의 텍스트 선이 고정 너비로 그려져있는 맞춤 drawRect
방법으로보기가 있습니다. 이보기는 항상 텍스트의 위치와 텍스트 내용이 항상 변경되어 초당 약 16 회의 비율로 다시 그려집니다. 나는 또한 나의 텍스트가 어떤 배경에서 명확하게 볼 수있는 방법으로 그려 질 필요가 있고, 그 목적을 위해 나는 다음을 수행하십시오iOS에서 테두리가있는 텍스트를 효율적으로 그립니다.
CGContextSetTextDrawingMode(ctx, kCGTextStroke); // Border mode
[string drawAtPoint:point withFont:font];
CGContextSetTextDrawingMode(ctx, kCGTextFill); // Text mode
[string drawAtPoint:point withFont:font];
이 코드는 유선 폭 경계 모드에서 텍스트를 그립니다 같은 위치에서 채우기 모드로 텍스트를 다시 그립니다. 이 방법으로 각 문자 주위에 흰색 테두리가있는 파란색 텍스트가 나타납니다.
결과는 성능면에서 저를 위해서 절대적으로 만족합니다. 시간 프로필러 사용 전체보기를 그리는 데 소요 된 시간의 약 70 %가 테두리 (획) 모드로 텍스트를 그리는 실행에 소비되었음을 알았습니다. 그러나 채우기 모드의 그리기는 전체 뷰 그리기 시간의 단 3 %를 차지합니다. 뷰의 다시 그리기 빈도를 고려할 때 이것이 효율적이지 않다고 생각합니다.
그래서 누구든지 더 효율적으로 각 문자 주위에 테두리가있는 텍스트를 그리는 방법을 알고 있습니까?
대답 해 주셔서 감사합니다 CGBitmapContext
UIGraphicsBeginImageContext
그렇게하는 방법을 몇 가지 옵션이 있습니다. 첫 번째 부분을 그림자로 구현했으며 스트로크 모드에서 텍스트를 그릴 때보 다 두 배 더 느리다는 것은 꽤 논리적이다. 하지만 이미지 캐싱에 대한 두 번째 옵션을 이해하지 못했습니다. 어떻게 작동하고 어떻게 성능을 향상시킬 수 있습니까? – BartoNaz
올바르게 이해하면 그려진 텍스트를 이미지로 저장 한 다음 현재 텍스트가 캐시 된 텍스트와 동일 할 때마다 내보기에 그려 넣을 수 있습니다. 그러나 텍스트가보기가 다시 그려지는 것보다 작은 빈도로 변경되기 때문에 성능이 실제로 향상됩니다. 아이디어를 가져 주셔서 감사합니다. – BartoNaz