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 }