我们有时候在写项目的时候,会碰到,意见反馈,还有其他地方,讲座活动细则等需要大篇展示的文本,
因为每次服务器返回的内容大小不一,所以需要动态的调整label的宽高:
在ios 6 的时候可以:
-(void)creatLabel
{
//根据文字 字数动态确定label宽高
_nameLabel = [[UILabel alloc]init];
_nameLabel.frame = CGRectMake(100, 100, 100, 40);
_nameLabel.backgroundColor = [UIColor redColor];
_nameLabel.text = @"菩提本无树";
//设置label的字体 HelveticaNeue Courier
UIFont *font = [UIFont fontWithName:@"HelveticaNeue" size:24.0f];
_nameLabel.font = font;
//根据字体得到nsstring的尺寸
CGSize size = [_nameLabel.text sizeWithAttributes:[NSDictionary dictionaryWithObjectsAndKeys:font,NSFontAttributeName, nil]];
//名字的高
CGFloat nameH = size.height;
//名字的宽
CGFloat nameW = size.width;
_nameLabel.frame = CGRectMake(100, 100, nameW, nameH);
[self.view addSubview:_nameLabel];
}
ios 7 的时候可以:
-(void)creatTextField
{
//根据正文内容多少,动态确定正文content的frame
_content = [[UILabel alloc]init];
_content.frame = CGRectMake(17, 200, self.view.frame.size.width-34, 120);
_content.backgroundColor = [UIColor redColor];
_content.clipsToBounds = YES;
_content.layer.cornerRadius = 10;
_content.numberOfLines = 0;
_content.layer.borderColor = [UIColor grayColor].CGColor;
_content.layer.borderWidth = 0.8;
_content.text = @"今天天气好晴朗,今天天气好晴朗今天天气好晴朗,今天天气好晴朗今天天气好晴朗,今天天气好晴朗今天天气好晴朗,今天天气好晴朗今天天气好晴朗,今天天气好晴朗今天天气好晴朗,今天天气好晴朗今天天气好晴朗,今天天气好晴朗今天天气好晴朗,今天天气好晴朗今天天气好晴朗,今天天气好晴朗今天天气好晴朗,今天天气好晴朗今天天气好晴朗,今天天气好晴朗今天天气好晴朗,今天天气好晴朗今天天气好晴朗,今天天气好晴朗今天天气好晴朗,今天天气好晴朗今天天气好晴朗,今天天气好晴朗今天天气好晴朗,今天天气好晴朗今天天气好晴朗,今天天气好晴朗今天天气好晴朗,今天天气好晴朗今天天气好晴朗,今天天气好晴朗今天天气好晴朗,今天天气好晴朗今天天气好晴朗,今天天气好晴朗";
//宽度
CGFloat contentW = self.view.bounds.size.width - 34;
//label的字体 HelveticaNeue Courier
UIFont *fnt = [UIFont fontWithName:@"HelveticaNeue" size:18.0f];
_content.font = fnt;
// iOS7中用以下方法替代过时的iOS6中的sizeWithFont:constrainedToSize:lineBreakMode:方法
CGRect tmpRect = [_content.text boundingRectWithSize:CGSizeMake(contentW, 1000) options:NSStringDrawingUsesLineFragmentOrigin attributes:[NSDictionary dictionaryWithObjectsAndKeys:fnt,NSFontAttributeName, nil] context:nil];
// 高度H
CGFloat contentH = tmpRect.size.height;
NSLog(@"调整后的显示宽度:%f,显示高度:%f",contentW,contentH);
_content.frame = CGRectMake(17, 200, contentW,contentH);
[self.view addSubview:_content];
}
这样可以很好的解决这个问题!
作者:稻草人11223