Как да зададете динамично ширината и височината с автоматично оформление на 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 attributes:@{NSFontAttributeName:font } context:nil]; размер = 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