코어 텍스트로 렌더링 된 텍스트의 경우 NSRange
에서 CGRect
을 어떻게 얻을 수 있습니까?코어 텍스트 - NSRange에서 픽셀 좌표 가져 오기
코어 텍스트를 NSAttributedString
과 함께 사용하고 있습니다.
코어 텍스트로 렌더링 된 텍스트의 경우 NSRange
에서 CGRect
을 어떻게 얻을 수 있습니까?코어 텍스트 - NSRange에서 픽셀 좌표 가져 오기
코어 텍스트를 NSAttributedString
과 함께 사용하고 있습니다.
절대적인 고통이지만 할 수 있습니다.
당신은 자신의 문자 범위는 CTLineGetStringRange()
을 사용하여 찾고있는 범위에있는 경우, 라인 자체로 렌더링 얼마나 큰 찾을 CTLineGetTypographicBounds()
를 사용하여 확인 CTFrameGetLines()
를 사용하여 프레임의 모든 라인을 얻을 필요, 사용 CTLineGetOffsetForStringIndex()
을 사용하여 범위의 시작/끝 문자의 실제 위치를 결정하십시오 (선이 원하는 범위의 일부 범위에 불과한 경우).
이 모든 것을 결합하고 오프셋과 높이를 합하면 원하는 것을 얻을 수 있습니다. CTLineGetImageBounds()
은 그래픽 컨텍스트가 없으면 작동하지 않으며 (어쨌든 꽤 비싸다)이 문제를 해결할 필요가 없다는 점에 유의하십시오.
먼저 거짓말에 관심이있는 범위가있는 행을 결정하십시오. 그런 다음 CTLineGetOffsetForStringIndex()
으로 전화하여 라인의 시작 부분에서 특정 문자열 위치의 오프셋을 가져옵니다. CTLineGetImageBounds()
과 함께 범위 내 첫 문자와 마지막 문자의 위치는 CGPoint
이어야합니다.
상세한 답변, 고마워요! 이와 같은 일에 필요한 모든 기능을 찾는 것은 항상 고통 스럽습니다. :) – Joshua
@Joshua는이 답변을 구현할 때 ur 코드를 공유 할 수 있습니까 ?? 나는 약간 문제가 있고 3 주까지 그것을 해결할 수 없다고 생각한다. 도와주세요, 제발 ... –
@Risma 저는 이것을 실행하는 것에 결코 휩쓸 리지 않았지만 필요한 모든 것은 Sean의 대답에 있습니다. – Joshua