一、根据文本计算size,这里须要传入attributeside
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); // width:193.482031 heigth:23.867188
二、富文本计算sizespa
CGSize size = [label.attributedText size]; label.frame = CGRectMake(20, 100, size.width, size.height); // width:193.482031 heigth:23.867188
三、经过UIView的 sizeThatFits3d
// 在单行文本的状况下,参数size设置多少都无所谓,因此里传了CGSizeZero CGSize size = [label sizeThatFits:CGSizeZero]; label.frame = CGRectMake(20, 100, size.width, size.height); // width: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); // width:15.000000 heigth:334.500000