Как динамически установить ширину и высоту с помощью автомакета UILabel в Objective C

Я новичок в iOS и столкнулся с проблемой установки ширины и высоты UILabel. На этот вопрос есть много ответов, но мне ничего не помогает.

введите здесь описание изображения

Как на изображении, обе метки перекрываются. Мне нужно, чтобы нижняя метка соответствовала тексту верхней метки. Как это сделать? Я также пробую AutoLayout и использую такой код

Мне нужно установить UILabel Height Auto в соответствии с текстом. нравится

введите здесь описание изображения

введите здесь описание изображения

[lblSiteName setNumberOfLines:0];
[lblSiteName sizeToFit];

Я использую .XIB. Как это сделать. Заранее спасибо!


person Muju    schedule 15.02.2017    source источник
comment
см. этот stackoverflow.com/questions /446405/   -  person Anbu.Karthik    schedule 15.02.2017
comment
дайте ограничение высоты вашей метки больше, чем равное, и установите номер строки 0 и напишите один метод, который найдет высоту вашего текста и установит ее на вашу метку   -  person Himanshu Moradiya    schedule 15.02.2017
comment
-(CGSize)findHeightForText:(NSString *)текст, имеющийWidth:(CGFloat)widthValue andFont:(UIFont *)font { CGSize size = CGSizeZero; if (text) { CGRect frame = [text boundingRectWithSize:CGSizeMake(widthValue, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin атрибуты:@{NSFontAttributeName:font} context:nil]; size = CGSizeMake (frame.size.width, ceil (frame.size.height)); } возвращаемый размер; }   -  person Himanshu Moradiya    schedule 15.02.2017
comment
@Muju, что ты именно хочешь? Ваша вторая метка останется ниже текста вашей первой метки с некоторым дополнением? или выровнено с clientname?   -  person iPeter    schedule 15.02.2017
comment
Возможный дубликат отрегулировать высоту UILabel в зависимости от текста   -  person Jigar    schedule 15.02.2017
comment
@iPeter Без заполнения. Метка клиента должна быть заменена в соответствии с текстом метки имени сайта. То, что я хочу.   -  person Muju    schedule 15.02.2017
comment
Я рекомендую использовать AutoLayout. Обе приведенные выше ссылки устарели и больше не применимы, поскольку принятый ответ дает неправильное решение.   -  person koen    schedule 15.02.2017
comment
Вы можете сделать выходные ограничения высоты и ширины UILabel и установить их динамически, или вы можете установить ограничение ширины и высоты меньше или больше определенного размера.   -  person Gurjinder Singh    schedule 17.05.2017


Ответы (1)


Попробуйте использовать это:

+ (CGSize) labelSize: (UILabel *) label
{
    CGSize maximumLabelSize = CGSizeMake(label.frame.size.width, FLT_MAX);
    CGSize labelSize = [label.text sizeWithFont:label.font constrainedToSize:maximumLabelSize lineBreakMode:label.lineBreakMode];
    return labelSize;
}

С помощью этого кода вы можете получить фиксированный размер строки для данного UIFont.

person Sumeet Mourya    schedule 15.02.2017
comment
Как вызвать этот метод. - person Muju; 15.02.2017
comment
sizeWithFont уже давно устарел, используйте вместо него sizeWithAttributes:. - person koen; 15.02.2017