나는 여러 페이지로 텍스트를 구문 분석하는 클래스가 있습니다. sizeWithFont : 메서드를 사용하여 한 페이지가 끝나고 다른 페이지가 시작될 때를 식별합니다. 하지만 불행히도 파싱해야 할 텍스트의 양이 꽤 많기 때문에 전체 작업을 백그라운드 스레드에서 수행해야합니다 (완료하는 데 몇 초 걸립니다). 따라서 때로는 인터페이스 (UIKit는 스레드로부터 안전하지 않지만 여러 스레드에서 동시에 호출 함)에서 시각적 인 아티팩트를 얻을 수 있습니다.이를 제거하는 것이 좋습니다.sizeWithFont의 대안 : method
배경 스레드에서 sizeWithFont :를 제거해야합니다. 그러나이 방법의 대안으로 보이지 않습니다. 현재 텍스트 위치를 얻기 위해
- 전화 기능 CGContextGetTextPosition : 코어 그래픽과 텍스트의 폭을 찾을 수있는 유일한 방법은 애플의 설명서에 명시된 방법을 사용하는 것입니다.
- CGContextSetTextDrawingMode 함수를 사용하여 텍스트 그리기 모드를 kCGTextInvisible로 설정하십시오.
- CGContextShowText 함수를 호출하여 텍스트를 그려 현재 텍스트 위치에 텍스트를 그립니다.
- CGContextGetTextPosition 함수를 호출하여 최종 텍스트 위치를 결정하십시오.
- 텍스트의 너비를 결정하려면 끝 위치에서 시작 위치를 뺍니다.
그러나 나는 이것이 엄청난 성능 손실을 초래할 것이라고 우려하고 있습니다.
누구나 텍스트 너비를 확인할 수있는 또 다른 방법이 있습니까?