当我调用sizeToFit
我的一个视图时,我注意到 iOS 框架首先调用sizeThatFits
,然后再调用layoutSubviews
该视图。这对我来说是有问题的,因为 my 中的计算sizeThatFits
取决于 my 的结果layoutSubviews
。在下面的例子中,一个子视图被调整layoutSubviews
并且这个子视图的高度被用于sizeThatFits
. 目前我的代码不起作用,顺序颠倒了。
在我的视图控制器的 viewDidLoad 中:
UIView* header = [[MyHeader alloc] init];
[header sizeToFit];
self.tableView.tableHeaderView = header;
[header release];
在我看来:
- (void) layoutSubviews {
[super layoutSubviews];
[self.subView sizeToFit];
}
- (CGSize) sizeThatFits:(CGSize)size {
return CGSizeMake(
self.frame.size.width,
self.subView.frame.size.height
);
}