Подтвердить что ты не робот

Как настроить и сделать ширину UILabel в соответствии с размером текста?

В моем проекте есть UILabel с текстом. Размер шрифта - 16pt. Содержимое текста изменяется в зависимости от разных случаев. Я надеюсь, что он может автоматически регулировать ширину UILabel, чтобы соответствовать полной ширине текстов без растягивания.

Возможно ли это?

4b9b3361

Ответ 1

Предполагается, что вы уже установили шрифт:

label.text = @"some text";
[label sizeToFit];

Вам также необходимо определить максимальную ширину и сообщить вашей программе, что делать, если sizeToFit дает вам ширину больше этого максимума.

Ответ 2

Здесь, как это сделать, предположим, что следующая messageLabel - это метка, для которой вы хотите получить желаемый эффект. Теперь попробуйте простую строку кодов:

    // Set width constraint for label; it actually the width of your UILabel
    CGFloat constrainedWidth = 240.0f;
    // Calculate space for the specified string
    CGSize sizeOfText = [yourText sizeWithFont:yourFont constrainedToSize:CGSizeMake(constrainedWidth, CGFLOAT_MAX) lineBreakMode:UILineBreakModeWordWrap];
    UILabel *messageLabel = [[UILabel alloc] initWithFrame:CGRectMake(20,20,constrainedWidth,sizeOfText.height)];
    messageLabel.text = yourText;
    messageLabel.numberOfLines = 0;// This will make the label multiline

Ответ 3

NSString *[email protected]"I am here.";
CGSize stringsize1 = [txt1 sizeWithFont:[UIFont systemFontOfSize:14]]; 
[label setFrame:CGRectMake(x,y,stringsize1.width,hieght)];
[label setText:txt1];

Ответ 4

Здесь я вижу три варианта.

Во-первых, сделайте размер ярлыка достаточно большим, чтобы сохранить любой текст. Это самое простое, но не всегда хорошо работает - зависит от его окружающих представлений.

Во-вторых, Label может адаптировать размер шрифта для более длительного текста (свойство adjustsFontSizeToFitWidth). Это часто нежелательно, разные шрифты в элементах могут выглядеть уродливыми.

Последний вариант заключается в программном изменении размера метки в соответствии с ее текущим текстом. Чтобы вычислить размер, необходимый для хранения текста с текущим шрифтом, используйте примерно следующее:

CGSize textSize = [[someLabel text] sizeWithFont:[someLabel font] forWidth:someLabel.bounds.size.width lineBreakMode:UILineBreakModeWordWrap];

Ответ 5

Если вы уже установили свой шрифт и его размер, и если у вас есть определенный фрейм, попробуйте использовать следующие для этих двух общих условий:

if (label.text.length > maxCharPerLine) [label setNumberOfLines:0]; // infinite lines
else [label setNumberOfLines:1]; // one line only

// Adjust your font size to fit your desired width.
[label setAdjustsFontSizeToFitWidth:YES];

Ответ 6

Следуйте этому.

CGSize stringsize = [yourString sizeWithFont:[UIFont systemFontOfSize:fontSize]]; 
[label setFrame:CGRectMake(x,y,stringsize.width,height)];
[label setText: yourString];

Ответ 7

Поскольку размерWithFont обесценивается в IOS 7.0, то вы ниже кода

#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)



 if (SYSTEM_VERSION_LESS_THAN(@"7.0")) {
        // code here for iOS 5.0,6.0 and so on
        CGSize fontSize = [itemCat_text sizeWithFont:[UIFont fontWithName:@"Helvetica" size:12]];
    } else {
        // code here for iOS 7.0
         fontSize = [itemCat_text sizeWithAttributes:
                           @{NSFontAttributeName:
                                 [UIFont fontWithName:@"Helvetica" size:12]}];
    }

Ответ 8

Использование автоматической разметки:

enter image description here

В ViewController:

override func viewDidLoad() {
    super.viewDidLoad()

    sampleLabel.text = "Electrical Maintenance and Repair"
    sampleLabel.sizeToFit()
}