sizeToFit: 會(huì)計(jì)算出最優(yōu)的 size 而且會(huì)改變自己的size
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 0, 0)];
label.backgroundColor = UIColor.grayColor;
label.font = [UIFont systemFontOfSize:20];
label.text = @"北京歡迎你!!!";
//sizeToFit: 直接改變了label的寬和高, 使它根據(jù)上面的字符串的大小做合適的改變
[label sizeToFit];
NSLog(@"width = %.0f height = %.0f",label.frame.size.width, label.frame.size.height);
[self.view addSubview:label];
//輸出結(jié)果:
width = 119 height = 24
注意: 使用sizeToFit時(shí), 一定要設(shè)置控件的frame, 并且不可以使用Masonry, 否則sizeToFit將失效
sizeThatFits: 會(huì)計(jì)算出最優(yōu)的 size 但是不會(huì)改變 自己的size
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 0, 0)];
label.backgroundColor = UIColor.grayColor;
label.font = [UIFont systemFontOfSize:20];
label.text = @"北京歡迎你!!!";
//sizeThatFits并沒有改變?cè)糽abel的大小
CGSize sizeThatFits = [label sizeThatFits:CGSizeZero];
NSLog(@"sizeThatFits: width = %.1f height = %.1f", sizeThatFits.width, sizeThatFits.height);
NSLog(@"label: width = %.1f height = %.1f",label.frame.size.width, label.frame.size.height);
[self.view addSubview:label];
輸出結(jié)果:
sizeThatFits: width = 119.0 height = 24.0
label: width = 0.0 height = 0.0
原文: https://zhuanlan.zhihu.com/p/32257003