码迷,mamicode.com
首页 > 移动开发 > 详细

iOS根据文字字数动态确定Label宽高

时间:2016-04-29 13:51:36      阅读:2077      评论:0      收藏:0      [点我收藏+]

标签:

我们有时候在写项目的时候,会碰到,意见反馈,还有其他地方,讲座活动细则等需要大篇展示的文本,

因为每次服务器返回的内容大小不一,所以需要动态的调整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];
}

 

这样可以很好的解决这个问题!

iOS根据文字字数动态确定Label宽高

标签:

原文地址:http://www.cnblogs.com/hero11223/p/5445676.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!