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


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

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

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

  • 相关阅读:
    python爬虫-execjs使用
    关于命令行操作数据库整理
    php项目整理之no1
    c++笔记整理
    php实战开发之自我整理(学习笔记)
    php之JavaScript
    html嵌入样式表
    php-css外边距
    The report for triangle problem
    An error in projects
  • 原文地址:https://www.cnblogs.com/hero11223/p/5445676.html
Copyright © 2020-2023  润新知