2013-11-01 2 views
1

iPhone에서 채팅 앱을 만들고 있습니다. sizeWithFont : constrainedToSize : lineBreakMode 함수에 문제가 있습니다. NSString에 긴 길이의 공백이 있으면 sizeWithFont()가 항상 반환합니다 (너비 : 218, 높이 : 18)iOS sizeWithFont의 공백 수에 제한이 있습니까? constrainedToSize : lineBreakMode?

이것은 내 테스트 코드입니다.

NSMutableString *string = [[NSMutableString alloc]initWithString:@""]; 
for(NSInteger i = 0; i < 99; i++) { 
    [string insertString:@" " atIndex:0]; 
    NSInteger length = string.length; 
    CGSize size = [string sizeWithFont:[UIFont systemFontOfSize:[UIFont systemFontSize]] constrainedToSize:CGSizeMake(220, 9999) lineBreakMode:NSLineBreakByWordWrapping]; 
    NSLog(@"Text:%@\nlength: %d\nsize: %f, %f\n",string, length, size.width, size.height, nil); 
} 

그리고 이것은 결과입니다.

Text: 
length: 1 
size: 4.000000, 18.000000 
Text: 
length: 2 
size: 8.000000, 18.000000 
Text: 
length: 3 
size: 12.000000, 18.000000 
. 
. 
. 
Text:               
length: 56 
size: 218.000000, 18.000000 
Text:               
length: 57 
size: 218.000000, 18.000000 
Text:               
length: 58 
. 
. 
. 
Text:                         
length: 99 
size: 218.000000, 18.000000 

질문 : 긴 공백 문자열을 올바르게 얻으려면 어떻게해야합니까?

답변

1

아마 이것은 NSLineBreakByWordWrapping을 사용하고 있으며 단어가 없기 때문일 것입니다.

NSLineBreakByCharWrapping을 사용해보세요.

+0

'NSLineBreakByCharWrapping'테스트를 시도했습니다. 결과는 같습니다. – user2943733