2011-04-29 5 views
5

텍스트 뷰 내부의 텍스트 배치는 어떤 요인에 달려 있습니까? 내 textview의 너비는 160px이고 아래에 언급 된 코드를 사용하여 수신 텍스트의 너비를 계산했으며이 텍스트는 157px로 나오지만이 텍스트는 3 줄로 묶여 있습니다 ... 왜 그렇습니까?NSString의 올바른 너비 찾기

CGSize size = [myText sizeWithFont:textViewFont 
      constrainedToSize:textView.frame.size 
      lineBreakMode:UILineBreakModeWordWrap]; 

CGFloat textWidth = size.width; 

줄 수를 얻기 위해 텍스트 너비를 텍스트보기의 너비로 나누는 것을 고려했습니다. 그러나 계산은 시뮬레이터에서 textview에 오는 3 줄을 볼 수있는 반면 1을 반환합니다.

답변

10
- (CGSize)sizeWithFont:(UIFont *)font 
    constrainedToSize:(CGSize)size 
     lineBreakMode:(UILineBreakMode)lineBreakMode 

는 문자열의 크기를 계산합니다.

- (CGSize)sizeWithFont:(UIFont *)font 

: 참조 : http://developer.apple.com/library/ios/#documentation/uikit/reference/NSString_UIKit_Additions/Reference/Reference.html

참고 :됩니다

- (CGSize)sizeWithFont:(UIFont *)font 

iOS7에

의로가 더 제약 한 줄에 그려 경우

사용 문자열의 폭을 얻으려면 더 이상 사용되지 않음 :

- (CGSize)sizeWithAttributes:(NSDictionary *)attrs 
+0

문자열이 아직 화면에 그려지지 않은 것이 문제입니다. 서버에서이 데이터를 가져 오는 중 일부 기능은 주어진 크기의 텍스트 영역에 몇 줄이 들어가는 지 계산해야합니다. 그 주위의 해결책? – Abhinav

+0

나는이 내용을 확인하지는 않았지만 Jano의 대답은이 질문에 대한 답이다. http://stackoverflow.com/questions/5837348/counting-the-number-of-lines-a-textview-lines-wrapped-by- 프레임 크기가 적당 해 보인다. – monowerker

1

그 방법으로 전달하는 크기의 height을 거대한 것으로 설정해보십시오. 그렇지 않으면 반환 된 크기는 항상 텍스트보기의 실제 높이를 표시합니다 (전체 문자열이 주어진 높이에 맞지 않는다고 가정). 문자열이 맞게 잘립니다 얻을 것이다 주어진 크기 제한 너무 긴 경우는, 인수로 주어진 크기의 제약을 그려 될 경우

+2

(나는 FLT_MAX를 사용합니다) – nielsbot

관련 문제