Ответ 1
Попробуйте myUILabel.intrinsicContentSize()
. Убедитесь, что вы сначала установили свой шрифт.
Я получаю ширину UILabel [после того, как текст установлен]:
myUILabel.frame.width
но всегда имеет одинаковую ширину, независимо от того, содержит ли она строку: "Hello."
или строку: "Hello everyone on this planet."
. Но UILabel должен иметь большую ширину со второй строкой.
Попробуйте myUILabel.intrinsicContentSize()
. Убедитесь, что вы сначала установили свой шрифт.
Вы должны использовать [label sizeToFit]
sizeToFit
на ярлыке будет растягиваться ярлык для размещения текста.
Другое решение - рассчитать ширину строки и перефразировать метку на основе ширины строк.
Для второго решения вы можете рассчитать размер строки как
CGSize strSize = CGSizeZero;
CGSize minSize = CGSizeZero;
if([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)
{
NSAttributedString *attributedText = [[[NSAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName: label.font}] autorelease];
CGRect rect = [attributedText boundingRectWithSize:constraintSize
options:NSStringDrawingUsesLineFragmentOrigin
context:nil];
strSize = rect.size;
}
else
{
strSize = [text sizeWithFont:label.font constrainedToSize:constraintSize];
}