2012-03-26 3 views
2

CoreText에서 내 자신의 사용자 정의 UITextView을 개발했으며 또한 Apple의 SimpleTextInput을 살펴보면 줄 끝 부분에 공간이 부족할 때 공백 또는 ""이 깨지지 (또는 다음 줄로 이동하지 않음) 것을 알았습니다. 켜졌 어. 대신 뷰의 너비 경계를 넘어선 같은 선에 그려집니다.CoreText - 공백을 배치하지 않습니까?

버그입니까? 아니면 의도 한 동작입니까? 어쨌든 CoreText으로 다음 줄로 감싸거나 끊을 수있는 공간이 있습니까?

업데이트 : 개별적으로 공백을 설정하여 kCTLineBreakByCharWrapping 속성을 사용하려고 시도했지만 작동하지 않았습니다. 어쩌면 거기에 올바르게 입력 할 수 있습니다 @" " 대신 입력 할 수있는 일부 유니 코드 문자가 생각하십니까? 이 코드를 지금 당장 수동으로 넣지 않아도됩니다.

답변

4

""대신에 -을 사용했습니다. 텍스트를 그리기 전에는 - 을 비워 두어야합니다. 그래서 당신은 빈 공간에서 당신이 좋아할만한 것을 할 수 있습니다, 나는이 장소들에 emoji을 그립니다. 그것은 나를 위해 일합니다. 시도해보십시오 ~ ^.^

7

공백만으로는 줄 바꿈을 트리거하지 않기 때문에 설계된 것입니다. 여백을 넘을 수있는 문자 만 줄 바꿈을 트리거합니다.

CTLine의 끝에있는 공백의 너비는 CTLineGetTrailingWhitespaceWidth을 사용하여 찾을 수 있습니다.

CTRunDelegate 속성을 첨부하여 공백 문자로 인해 줄 바꿈이 생길 수 있습니다 (여백을 넘는 경우). 에 적절한 너비, 상승 및 하강을보고해야합니다.이 값은 CTFont에서 찾아야합니다. 동일한 글꼴 및 크기로 설정된 모든 공백에 대해 CTRunDelegate의 단일 인스턴스를 사용할 수 있습니다.

+0

감사합니다. 사실 나는 UITextView의 동작을 모방했다. 그 점에서, 줄 끝 부분에 공백을 넣으면 공백이 추가되지만 커서는 그 자리에 그대로 있습니다. –

+0

CTRunDelegate는 실제로 공백에 첨부 된 경우 * 도움이되지 않습니다. 이것은 정상적인 nobr 공간에도 적용됩니다. – Nuoji

관련 문제