iOS-动态计算Label的高度

一. 要求

1.根据网络请求的回来的字符串内容,动态计算Label的高度.

二. 注意点

1. 要注意设置label 的 numberOfLines 为0;

2. MAXFLOAT 的作用. 设置高度无限大.

三.代码

#import "ViewController.h"

@interface ViewController ()

@property (nonatomic,strong) UILabel * label;

@end

 @implementation ViewController

 - (void)viewDidLoad

{

    [super viewDidLoad]; 

    [self createLabel];

}

- (void)createLabel

{

    self.label = [[UILabel alloc] init];

    

    self.label.backgroundColor = [UIColor yellowColor];

    

    NSString * str = @"1、毕业后才知道校园恋爱是最纯洁的; 2、毕业后才知道学习是最重要的; 3、毕业后才知道校园生活是最幸福的; 4、毕业后才知道宿舍生活是最好的; 5、毕业后才知道食堂的饭菜是最便宜的; 6、毕业后才知道上学是最美妙的事。 7、毕业后才知道学生花钱最大手大脚......";

    

    self.label.text = str;

    self.label.numberOfLines = 0;

    

    [self.view addSubview:self.label];

    UIFont * font = self.label.font;

// iOS 7.0 之前的方法.已经被弃用    

//    CGSize size = [self.label.text sizeWithFont:font constrainedToSize:CGSizeMake(_label.frame.size.width, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];

    

    NSDictionary * dict = @{

                            NSFontAttributeName : font

                            };

     //计算label的文字宽高

    CGSize size = [self.label.text boundingRectWithSize:CGSizeMake(self.view.frame.size.width, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:dict context:nil].size;

    CGFloat nameH = size.height;

    CGFloat nameW = size.width;

    NSLog(@"w: %f --h: %f",nameW,nameH);    

// 设置label的动态frame

    self.label.frame = CGRectMake(0, 30, nameW, nameH);

}

@end

 
你的一次推荐就是对我莫大的支持。感觉不错,给个推荐或者评论吧。
原文地址:https://www.cnblogs.com/mancong/p/5395782.html