1、根据文本计算size,这里需要传入attributes
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20, 100, 0, 0)]; label.text = @"12331afaa我是谁的谁"; label.textColor = [UIColor redColor]; label.backgroundColor = [UIColor greenColor]; label.font = [UIFont systemFontOfSize:20]; [self.view addSubview:label]; CGSize size = [label.text sizeWithAttributes:@{NSFontAttributeName:label.font}]; label.frame = CGRectMake(20, 100, size.width, size.height); // 193.482031 heigth:23.867188
2、富文本计算size
CGSize size = [label.attributedText size]; label.frame = CGRectMake(20, 100, size.width, size.height); // 193.482031 heigth:23.867188
3、通过UIView的 sizeThatFits
// 在单行文本的情况下,参数size设置多少都无所谓,所以里传了CGSizeZero CGSize size = [label sizeThatFits:CGSizeZero]; label.frame = CGRectMake(20, 100, size.width, size.height); // 193.500000 heigth:24.000000 // 可用此方法计算高度 label.text = @"ABCDEFGHIJKLMN"; label.numberOfLines = 0; label.textAlignment = NSTextAlignmentCenter; CGSize size = [label sizeThatFits:CGSizeMake(15, 0)]; label.frame = CGRectMake(20, 100, size.width, size.height); // 15.000000 heigth:334.500000