当我向一个
我的测试项目只包含一个视图,并包含一个按钮。点击按钮将在视图中添加另一个按钮,然后调用容器视图上的
UIView
添加子视图或者调整已存在的子视图大小时,我期望[view sizeToFit]
和[view sizeThatFits]
会反映出这些变化。然而,我的经验是sizeToFit
没有任何作用,而sizeThatFits
在改变前后返回相同的值。我的测试项目只包含一个视图,并包含一个按钮。点击按钮将在视图中添加另一个按钮,然后调用容器视图上的
sizeToFit
方法。在添加子视图之前和之后,视图边界的信息会被输出到控制台。- (void) logSizes {
NSLog(@"theView.bounds: %@", NSStringFromCGRect(theView.bounds));
NSLog(@"theView.sizeThatFits: %@", NSStringFromCGSize([theView sizeThatFits:CGSizeZero]));
}
- (void) buttonTouched {
[self logSizes];
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(10.0f, 100.0f, 400.0f, 600.0f);
[theView addSubview:btn];
[theView sizeToFit];
[self performSelector:@selector(logSizes) withObject:nil afterDelay:1.0];
}
输出为:
2010-10-15 15:40:42.359 SizeToFit[14953:207] theView.bounds: {{0, 0}, {322, 240}}
2010-10-15 15:40:42.387 SizeToFit[14953:207] theView.sizeThatFits: {322, 240}
2010-10-15 15:40:43.389 SizeToFit[14953:207] theView.bounds: {{0, 0}, {322, 240}}
2010-10-15 15:40:43.391 SizeToFit[14953:207] theView.sizeThatFits: {322, 240}
我一定是漏掉了什么。
谢谢。