如何调整和使UILabel的宽度适合文本大小?

ara*_*ide 48 iphone

在我的项目中,有一个UILabel带文本.字体大小为16pt.文本内容根据不同情况而变化.我希望它可以自动调整宽度UILabel以适应文本的总宽度而不拉伸.

可能吗?

Wil*_*sch 109

假设您已经设置了字体:

label.text = @"some text";
[label sizeToFit];
Run Code Online (Sandbox Code Playgroud)

您还需要定义最大宽度,并告诉程序如果sizeToFit为您提供的宽度大于该最大值,该如何操作.

  • 如何定义最大宽度? (55认同)
  • 要调整的宽度,行数必须为1.如果为0则调整高度.另请注意,这似乎只会增加UILabel,因此请确保它在IB中的宽度不如您将要使用的所有文本. (9认同)
  • sizeToFit方法是UIView的一种方法. (3认同)

Mun*_*osh 21

以下是如何操作,假设以下messageLabel是您希望获得所需效果的标签.现在,尝试这些简单的代码行:

    // Set width constraint for label; it's 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
Run Code Online (Sandbox Code Playgroud)

  • 这实际上是一个非常好的答案......只是不是针对这个具体问题!当您想要在保持固定宽度的同时自动调整"UILabel"的*高度*时,这个答案很有效.事实上,当我遇到这个页面时,我正在寻找的东西.我很想投票给你答案......但是它没有回答问题.然而,良好的解决方案可能会帮助那些偶然发现此页面的人. (7认同)

小智 13

NSString *txt1=@"I am here.";
CGSize stringsize1 = [txt1 sizeWithFont:[UIFont systemFontOfSize:14]]; 
[label setFrame:CGRectMake(x,y,stringsize1.width,hieght)];
[label setText:txt1];
Run Code Online (Sandbox Code Playgroud)


Mic*_*hal 7

我在这里看到三种选择.

首先,使标签的大小足以容纳任何文本.这是最简单的,但并不总是运作良好 - 取决于其周围的观点.

其次,Label可以根据较长的文本(adjustsFontSizeToFitWidth属性)调整字体的大小.这通常是不可取的,元素中的不同字体可能看起来很难看.

最后一个选项是根据其当前保留的文本以编程方式调整标签大小.要计算使用当前字体保存文本所需的大小,请使用以下内容:

CGSize textSize = [[someLabel text] sizeWithFont:[someLabel font] forWidth:someLabel.bounds.size.width lineBreakMode:UILineBreakModeWordWrap];
Run Code Online (Sandbox Code Playgroud)