Размер шрифта: ограниченный размер: режим прерывания строки: неверен при использовании UILineBreakModeClip?

#iphone #objective-c #ios

#iPhone #objective-c #iOS

Вопрос:

У меня возникли небольшие проблемы с sizeWithFont, в частности, с режимом прерывания строки.

 CGSize maxSize = CGSizeMake(30, 999);
UIFont *font = [UIFont fontWithName:@"TrebuchetMS" size:10.0f];
CGSize size = [@"hello" sizeWithFont: font constrainedToSize:maxSize lineBreakMode:UILineBreakModeClip];
  

С помощью этого кода размер возвращается с шириной 23 и высотой 13, что является правильным, однако, если я уменьшу максимальный размер до (10, 999), возвращаемый размер будет иметь ширину 9 и высоту 39, как если бы текст был перенесен на несколько строк. Разве UILineBreakModeClip не должен приводить к тому, что высота остается такой же, какой она была изначально (при этом остальная часть строки просто обрезается), или я немного не так понимаю это?

Ответ №1:

sizeWithFont:constrainedToSize:lineBreakMode: предназначен для вычисления нескольких строк текста, поэтому он разбивает текст на несколько строк, чтобы попытаться уместить его в пределах заданной ширины. Вместо этого попробуйте sizeWithFont:forWidth:lineBreakMode: который предназначен для обработки одной строки текста.

Смотрите ссылку на дополнения UIKit NSString для получения дополнительной информации.