UILabel:防止方法sizeToFit修改宽度?

时间:2013-12-12 01:01:27

标签: ios objective-c uikit uilabel

我正在尝试让UILabel自动将其高度调整为不同的输入字符串。虽然调用sizeToFIt会重新调整UILabel大小,但它也会重新调整其宽度!我需要一个统一的宽度,因此我有COMMENT_WIDTH常数。奇怪的是,我在之前的项目中拥有完全相同的代码,并且在调用方法后UILabel的宽度保持不变。有任何想法吗?

#define COMMENT_WIDTH 209

UILabel *comment        = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, COMMENT_WIDTH, CGFLOAT_MAX)];
comment.font            = [UIFont fontWithName:@"System" size:12.0f];
comment.numberOfLines   = 200;
comment.text            = quote.content;
comment.lineBreakMode = NSLineBreakByWordWrapping;

[comment sizeToFit];

我在sizeToFit方法之前和之后做了一个NSLog,这里有一些不同字符串输入的输出。请注意,宽度和高度会发生变化。

[2013-12-11 17:58:52.911 Inspyr[37855:70b] Before width: 209.000000, height : 340282346638528859811704183484516925440.000000 

[2013-12-11 17:58:52.911 Inspyr[37855:70b] After width: 111.000000, height : 21.000000 

2013-12-11 17:58:52.911 Inspyr[37855:70b] Before width: 209.000000, height : 340282346638528859811704183484516925440.000000 

2013-12-11 17:58:52.911 Inspyr[37855:70b] After width: 36.000000, height : 21.000000 

1 个答案:

答案 0 :(得分:0)

sizeToFit会根据您的文本将UILabel帧调整为可能的最小帧,而不管您之前手动设置的帧。只需使用sizeToFit,然后获取框架,更改其宽度,并将其设置为UILabel:

[comment sizeToFit];
CGRect newCommentFrame = comment.frame;
newCommentFrame.size.width = COMMENT_WIDTH;
comment.frame = newCommentFrame;