Как получить правильную ширину UILabel после того, как текст был установлен?

Я получаю ширину UILabel [после того, как текст установлен]:

myUILabel.frame.width

но всегда имеет одинаковую ширину, независимо от того, содержит ли она строку: "Hello." или строку: "Hello everyone on this planet.". Но UILabel должен иметь большую ширину со второй строкой.

Ответ 1

Попробуйте myUILabel.intrinsicContentSize(). Убедитесь, что вы сначала установили свой шрифт.

Ответ 2

Вы должны использовать [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];
}