有时一个UILable的text内容是变化的,而且差异有很大,
需求上要求UILabel的大小高宽能够自适应text的内容。代码例子:
myLable=[[UILabel alloc] initWithFrame:CGRectMake(0, 23, 175, 33)];
[myLable setFont:[UIFont fontWithName:@"Helvetica" size:10.0]];
[myLable setNumberOfLines:0];
[myLable setBackgroundColor:[UIColor clearColor]];
[myAdView addSubview:myLable];
UIFont *font = [UIFont fontWithName:@"Helvetica" size:10.0];
CGSize size = [text sizeWithFont:font constrainedToSize:CGSizeMake(175.0f, 2000.0f)
lineBreakMode:UILineBreakModeWordWrap];
CGRect rect=myLable.frame;
rect.size=size;
[myLable setFrame:rect];
[myLable setText:text];
核心的是
CGSize size = [text sizeWithFont:font constrainedToSize:CGSizeMake(175.0f, 2000.0f)
lineBreakMode:UILineBreakModeWordWrap];
来预算text显示时宽高。
其中font是显示的字体,constrainedToSize是最大可接受的字符串宽高(例子中是宽175,高2000)
lineBreakMode换行类型(UILineBreakModeWordWrap指的单词边界换行)
原文:http://10594302.blog.51cto.com/10584302/1711593