2010-07-19 78 views
5

我想在UITableView的页脚中显示UIButton(应该与页眉完全相同)。UITableView tableFooterView奇怪的调整大小

此代码是我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]; 

这个作品中,按钮有正确的宽度。

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

回答

19

无论您将视图添加为UITableView页脚/页眉的宽度设置为多少 - 其宽度总是与表格宽度相同。

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

编辑
在页脚/头的帧仍然是你设置的是高度的唯一参数。

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

+2

没错,就是这样,它调整我创建和看法,我只是没有注意到。谢谢。我认为应该在文档中提到设置tableFooterView属性调整视图的大小,这会节省一些时间。 – avf 2010-07-19 14:26:49

3

实际上我遇到了一种尝试克服此问题的方法;

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

希望这有助于

乔纳森