sizeThatFits and sizeToFit是UIView的两个方法
1 2 - (CGSize)sizeThatFits:(CGSize)size; 3 作用:return 'best' size to fit given size. does not actually resize view. Default is return existing view size 4 - (void)sizeToFit; 5 作用: calls sizeThatFits: with current view bounds and changes bounds size. 6 7 - (void)viewDidLoad 8 { 9 [super viewDidLoad]; 10 UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 200, 100)]; 11 view.backgroundColor = [UIColor yellowColor]; 12 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, 0, 0)]; 13 [label setFont:[UIFont systemFontOfSize:20]]; 14 label.text = @"hello wdszgrf"; 15 CGSize sizeThatFits = [label sizeThatFits:CGSizeZero]; 16 NSLog(@"---- %f %f ----", sizeThatFits.width, sizeThatFits.height); 17 // output: ---- 117.000000 24.000000 ---- 18 19 NSLog(@"**** %f %f ****", label.frame.size.width, label.frame.size.height); 20 // output: **** 0.000000 0.000000 **** 说明sizeThatSize并没有改变原始label的大小 21 22 [label sizeToFit]; // 这样搞就直接改变了这个label的宽和高,使它根据上面字符串的大小做合适的改变 23 [label setCenter:CGPointMake(80, 50)]; 24 NSLog(@"==== %f %f ====", label.frame.size.width, label.frame.size.height); 25 // output: ==== 117.000000 24.000000 ==== 26 27 [view addSubview:label]; 28 [self.view addSubview:view]; 29 }