zoukankan      html  css  js  c++  java
  • 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];
    }

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

  • 相关阅读:
    web 开发之酷炫--- 酷炫展示
    攻城狮的体检
    科技发烧友之智能路由
    科技发烧友之3d吉米投影
    科技发烧友之单反佳能700d中高端
    上海
    视频会议
    机器学习之信息
    filter
    centos 20T硬盘(超过16T)分区
  • 原文地址:https://www.cnblogs.com/hero11223/p/5445676.html
Copyright © 2011-2022 走看看