我正在尝试让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
答案 0 :(得分:0)
sizeToFit会根据您的文本将UILabel帧调整为可能的最小帧,而不管您之前手动设置的帧。只需使用sizeToFit,然后获取框架,更改其宽度,并将其设置为UILabel:
[comment sizeToFit];
CGRect newCommentFrame = comment.frame;
newCommentFrame.size.width = COMMENT_WIDTH;
comment.frame = newCommentFrame;