2010-06-29 5 views
2

UITextView로 제한되는 텍스트의 높이를 계산하려고하지만 올바른 결과를 반환하지 않는 것 같습니다.sizeWithFont를 사용하여 UITextView의 텍스트 높이를 계산하십시오. constrainedToSize : lineBreakMode가 올바른 결과를 반환하지 않는 것 같습니다.

- (void)textViewDidChange:(UITextView *)aTextView { 
    CGSize textSize = [aTextView.text sizeWithFont:aTextView.font constrainedToSize:aTextView.frame.size lineBreakMode:UILineBreakModeWordWrap]; 
    counter.text = [NSString stringWithFormat:@"%f", textSize.height]; 
} 

당신은 the sample project and a short screencast that illustrates the problem (418 KB)을 다운로드 할 수 있습니다

여기 내 코드입니다.

요약하면 문제는 줄 끝에 긴 단어를 입력하면 단어가 다음 줄로 이동하지만 문자열의 높이가 올바르게 조정되지 않는다는 것입니다.

도움을 주시면 감사하겠습니다.

최고,
토마스.

P. : iPhone SDK에서 발생합니다. 3.1.3

답변

5

문제는 UITextField가 실제로 텍스트를 그려서 감싼 영역 주위에 약간의 여백이 있다는 것입니다. 내가 아는 한 프로그램 적으로이 크기를 얻는 방법은 없지만 크기에서 6을 뺀 것이 적절하게 동작해야합니다.

+0

답변 해 주셔서 감사합니다. 내 생각 엔 실제로 UITextView에 어떤 종류의 패딩이 있습니다. 나는 그 크기를 결정하는 깨끗한 방법을 원했을 것이다. 예를 들어, 11을 textView 너비와 높이로 빼는 것은 트릭입니다. –

+0

마찬가지로 : : - (void) textViewDidChange : (UITextView *) aTextView { CGSize textViewSize = aTextView.frame.size; textViewSize.width- = kTextViewPadding; textViewSize.height- = kTextViewPadding; CGSize textSize = [aTextView.text sizeWithFont : aTextView.font constrainedToSize : textViewSize lineBreakMode : UILineBreakModeWordWrap]; counter.text = [NSString stringWithFormat : @ "% f", textSize.height]; } –

+0

레이더 파일을 작성하고 당분간 하드 코드 된 값을 사용하는 것이 좋습니다. 당신이 그것을 알아 낸 것을 기쁘게 생각합니다. –

관련 문제