UITableView tableFooterView奇怪的调整大小

时间:2010-07-19 12:03:00

标签: iphone header uitableview footer

我想在UITableView的页脚中显示UIButton(标题应该完全相同)。

此代码位于我的TableViewController的viewDidLoad中:

UIButton *footerShareButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[footerShareButton setFrame:CGRectMake(10, 0, 70, 50)];
NSLog(@"%f", footerShareButton.frame.size.width);

[self.tableView setTableFooterView:footerShareButton];

NSLog(@"%f", footerShareButton.frame.size.width);
NSLog(@"%f", self.tableView.tableFooterView.frame.size.width);

但是,此代码不起作用。 Button的宽度太大了,它是320.(虽然高度正确。)第一个NSLog输出70,第二个和第三个输出320.所以似乎setTableFooterView方法奇怪地调整了按钮的大小。

我已经将UIButton放在另一个UIView中,然后再将它设置为表格页脚,从而解决了这个问题:

 UIButton *footerShareButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
 [footerShareButton setFrame:CGRectMake(10, 0, 70, 50)];

 UIView *aView = [[UIView alloc] initWithFrame:CGRectMake(10, 0, 70, 50)];
 [aView addSubview:footerShareButton];

 [self.tableView setTableFooterView:aView];
 [aView release];

这样,按钮的宽度正确。

但是,我不明白为什么第一个代码示例不起作用。谁能解释一下?

2 个答案:

答案 0 :(得分:19)

无论您为视图设置的宽度是UITableView页脚/标题 - 它的宽度始终与表格的宽度相同。

因此,在您的情况下,您添加的视图会调整为CGRectMake(0, 0, 320, 50),但按钮仍保留正确的框架。按钮的框架是根据视图......

修改的:
页脚/标题框中唯一一个在设置时保留的参数是高度。

注意如果在将页眉/页脚视图添加到表格后更改页眉/页脚视图的高度,则不会进行任何更改。您应该在将高度添加到表格之前设置高度...

答案 1 :(得分:3)

实际上有一种方法可以解决这个问题;

创建一个空的UIView 320x(按钮的高度),然后将按钮置于此包含视图的中心。这样,视图内的按钮就不会调整大小。

希望这有帮助,

乔纳森