iOS Есть ли какие-либо ограничения числа пробелов в sizeWithFont:constrainedToSize:lineBreakMode?

Я делаю приложение для чата на iPhone. У меня проблема с функцией sizeWithFont:constrainedToSize:lineBreakMode. Когда NSString имеет длинную пробел, sizeWithFont() всегда возвращает (ширина:218, высота:18)

Это мой тестовый код.

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,

Другие вопросы по тегам