У меня есть многострочный UILabel, размер шрифта которого я бы хотел настроить в зависимости от длины текста. Весь текст должен вставляться в рамку метки без его усечения.Многострочный UILabel с настройкамиFontSizeToFitWidth
К сожалению, в соответствии с документацией свойство adjustsFontSizeToFitWidth
"действует только в том случае, если для свойства numberOfLines
установлено значение 1".
Я попытался определить скорректированный размер шрифта, используя
-[NSString (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(UILineBreakMode)lineBreakMode]
, а затем декремент размера шрифта, пока он не подходит. К сожалению, этот метод внутренне усекает текст, чтобы он вписывался в указанный размер и возвращал размер результирующей усеченной строки.
я нашел более точным, чтобы использовать '[собственного componentsSeparatedByCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]]' вместо просто разбивая пространство. – Jilouc
Jilouc, спасибо, хороший совет. Я обновил код. –
Это замечательно. Я добавил поддержку минимального размера шрифта и категории на 'UILabel' для удобства и [загрузил его как сущность] (https://gist.github.com/2766074) для всех, кто интересуется. – kevboh