标签:
我们有时候在写项目的时候,会碰到,意见反馈,还有其他地方,讲座活动细则等需要大篇展示的文本,
因为每次服务器返回的内容大小不一,所以需要动态的调整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]; }
这样可以很好的解决这个问题!
标签:
原文地址:http://www.cnblogs.com/hero11223/p/5445676.html