根据字符串长度 算label高度

- (void)viewDidLoad {

    [super viewDidLoad];

    NSString *str = @"delegateblock一般是用与两个对象11之间的通信交互,delegate需要定义协议方法,代理对象实现协议方 法,并且需要建立代理关系才能实现通信。block更加简洁,不需要定义繁琐的协议方法,但是如协议方 法,并且需要建立代理关系才能实现通信。block更加简洁,不需要定义繁琐的协议方法,但是如协议方 法,并且需要建立代理关系才能实现通信。block更加简洁,不需要定义繁琐的协议方法,但是如协议方 法,并且需要建立代理关系才能实现通信。block更加简洁,不需要定义繁琐的协议方法,但是如协议方 法,并且需要建立代理关系才能实现通信。block更加简洁,不需要定义繁琐的协议方法,但是如果通信事件比较 多的话,建议使用delegateNotification主要用于1对多的情况下通信,而且对象之间不需要建立关系,但是使用 ";

    

    CGFloat ScreenW = [[UIScreen mainScreen] bounds].size.width;

    

    CGFloat labelX = 10;

    CGFloat labelY = 100;

    CGFloat labelW = (ScreenW - labelX*2);

    CGFloat labelH = [self getStrSize:str andTexFont:[UIFont systemFontOfSize:17] andMaxSize:CGSizeMake(labelW, MAXFLOAT)].height;

    

    UILabel *myLable =[[UILabel alloc] initWithFrame:CGRectMake(labelX, labelY, labelW, labelH)];

    myLable.numberOfLines = 0;

    myLable.text = str;

    myLable.backgroundColor = [UIColor orangeColor];

    [self.view addSubview:myLable];

  

    

}

 

- (CGSize)getStrSize:(NSString *)textStr andTexFont:(UIFont *)font andMaxSize:(CGSize)maxSize

{

    NSDictionary *textAttDict = @{NSFontAttributeName : font};

    

    return [textStr boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:textAttDict context:nil].size;

}

原文地址:https://www.cnblogs.com/sunflower-lhb/p/5144710.html