Ios UILabel影响边界大小的行数

Ios UILabel影响边界大小的行数,ios,uilabel,Ios,Uilabel,我对UILabel有这种特殊的行为。任何numberOfLines都可以正常工作,但1除外。如果我将行数设置为1,它将忽略我稍后设置的宽度。 我不明白为什么一行把它搞砸了 这是我的密码 如果您想使用numberOfLines=1,那么您的文本将在一行中。因此请使用numberOfLines=0 label.numberOfLines = 0; 无需再次定义标签框架,因此请删除这些语句 CGRect rect = label.frame; rect.size.width = 100; label

我对
UILabel
有这种特殊的行为。任何
numberOfLines
都可以正常工作,但1除外。如果我将行数设置为1,它将忽略我稍后设置的宽度。 我不明白为什么一行把它搞砸了

这是我的密码


如果您想使用numberOfLines=1,那么您的文本将在一行中。因此请使用
numberOfLines=0

label.numberOfLines = 0;
无需再次定义标签框架,因此请删除这些语句

CGRect rect = label.frame;
rect.size.width = 100;
label.frame = rect;
使用此代码这是完美的

UILabel *label = [[UILabel alloc] init];
label.backgroundColor = [UIColor greenColor];
label.text = @"here is my label with lots of text to fill, here is my label with lots of text to fill";
label.frame = CGRectMake(20, 20, 100, 0);
label.numberOfLines = 0;
label.lineBreakMode = NSLineBreakByTruncatingTail;
[self.view addSubview:label];

[label sizeToFit];
将其用作:

UILabel *label = [[UILabel alloc] init];
label.backgroundColor = [UIColor greenColor];
label.text = @"here is my label with lots of text to fill, here is my label with lots of text to fill";

label.numberOfLines = 0;

CGSize labelSize = [label.text sizeWithFont:label.font constrainedToSize:CGSizeMake(100 , 9999) lineBreakMode:label.lineBreakMode];
float lHeight = labelSize.height;
label.frame = CGRectMake(20, 20, 100, lHeight);

label.lineBreakMode = NSLineBreakByTruncatingTail;
[self.view addSubview:label];
编辑:
-(void)sizeToFit

说明:

调整和移动接收器视图的大小,使其仅封闭其子视图。 如果要调整当前视图的大小以使其使用最适当的空间量,请调用此方法。特定的UIKit视图根据其内部需要自行调整大小。在某些情况下,如果视图没有superview,它可能会根据屏幕边界调整自身大小。因此,如果希望给定视图根据其父视图调整自身大小,则应在调用此方法之前将其添加到父视图中

// [label sizeToFit]; 
希望它能帮助您。

使用以下代码:

UILabel *label = [[UILabel alloc] init];
label.backgroundColor = [UIColor greenColor];
label.text = @"here is my label with lots of text to fill, here is my label with lots of text to fill";
label.frame = CGRectMake(20, 20, 100, 0);
label.numberOfLines = 3;
label.lineBreakMode = NSLineBreakByTruncatingTail;
[self.view addSubview:label];

[label sizeToFit];

CGRect rect = label.frame;
rect.size.width = 100;
label.frame = rect;

使用
numberOfLines=3

使用
numberOfLines=1


是的,当numberOfLines=1时它不工作

我必须在末尾加上这一行,使其适用于所有情况


label.width=min(label.width,100)

对不起,可能我表达得不清楚。我希望能够更改行数,但无论有多少文本,标签的宽度都保持不变。请查看我的答案。我的答案将正常工作..你的意思是你只想在一行中看到结果..这与我的代码完全相同。试着设置为1行,你就会明白我的意思。是的。我看到了这个。我正在检查这个问题,并很快让你知道。我得到了问题。您正在使用[label sizeToFit];这就是为什么它的大小根据文本而扩展。。所以把这条线去掉。检查我编辑的答案我使用[label sizeToFit],因为我需要将标签调整到文本的大小:)是的,我确实需要这个,但我还需要能够将它设置为其他行数,例如3..@AuRis现在看看。谢谢,这就是我的意思!出于某种原因,我以为我试过了,但没有成功。我错了。没问题,奥利斯,我很高兴这对你有帮助!过了这么多天,我发现这个解决方案在旧版本上不起作用。。。特别是5.1。知道为什么会这样吗?谢谢,但我需要能够设置所需的行数。你的建议只适合全文。根据你的说法,这篇文章是静态的。?
UILabel *label = [[UILabel alloc] init];
label.backgroundColor = [UIColor greenColor];
label.text = @"here is my label with lots of text to fill, here is my label with lots of text to fill";
label.frame = CGRectMake(20, 20, 100, 0);
label.numberOfLines = 3;
label.lineBreakMode = NSLineBreakByTruncatingTail;
[self.view addSubview:label];

[label sizeToFit];

CGRect rect = label.frame;
rect.size.width = 100;
label.frame = rect;