【发布时间】:2011-11-15 01:39:27
【问题描述】:
sizeWithFont:constrainedToSize:lineBreakMode: 似乎没有返回正确的宽度。执行这些代码后,我看到标签中的部分字符串被截断,这意味着我必须手动在大小上添加几个像素。我错过了什么吗?
我有一个 UILabel:
theLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, LABELWIDTH, LABELHEIGHT)];
theLabel.lineBreakMode = UILineBreakModeWordWrap;
theLabel.numberOfLines = 0;
[theLabel setFont:[UIFont fontWithName:@"MarkerFelt-Wide" size:16]];
theLabel.textColor = [UIColor blackColor];
theLabel.textAlignment = UITextAlignmentLeft;
theLabel.backgroundColor = [UIColor clearColor];
我尝试使用以下代码以编程方式修改标签的大小:
CGSize maximumLabelSize = CGSizeMake(LABELWIDTH, 10000);
CGSize expectedLabelSize = [someString sizeWithFont:theLabel.font constrainedToSize:maximumLabelSize lineBreakMode:theLabel.lineBreakMode];
theLabel.text = someString;
CGRect newFrame = theLabel.frame;
newFrame.size.height = expectedLabelSize.height;
newFrame.size.width = newFrame.size.width+50;
theLabel.frame = newFrame;
【问题讨论】:
-
嗯,首先
someText和someString应该是一样的。他们指向同一个 NSString 吗? -
是的。我进行了更改以使其更清晰。
-
这是在 UITableViewCell 内部吗?
-
嗨@Mr. Berna,我正在尝试使用 sizeToFit,但我仍然不确定为什么标签的大小总是更小,这会切掉里面的一部分文本。有什么想法吗?