UITableView headerView滚动偏移量

时间:2014-05-15 00:51:28

标签: ios objective-c uitableview cocoa-touch uisearchbar

我遇到UITableView及其财产tableHeaderView的问题。

我希望tableHeaderView的行为类似于UISearchBar,即内容偏移量应该是tableHeaderView。 当表格视图无法填充视图的框架时,设置contentOffset等并没有帮助。

这是当前行为的屏幕截图:

current behavior http://tubtub.de/export/now.png

我希望如何拥有:

desired behavior http://tubtub.de/export/desired.png

我在headerView中插入viewDidLoad,如下所示:

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
    headerView.backgroundColor = [UIColor redColor];
    self.tableView.tableHeaderView = headerView;
}

非常感谢任何帮助或提示。谢谢!

编辑:我通过利用UIScrollViewDelegate和子类化UITableView使其工作。请在提供的github repo上查看。

3 个答案:

答案 0 :(得分:1)

您可以使用setContentOffset:by headerView height。 只有当您的headerView高度有足够数量的数据时,才会发生此contentOffset。即)如果tableView不可滚动,因为屏幕截图中的数据很少,那么headerView仍然可见。但是,如果您有大量数据无法在屏幕上显示,则会有contentOffset。

尝试20行。你会明白我的意思。

UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
headerView.backgroundColor = [UIColor redColor];
self.tableView.tableHeaderView = headerView;
[self.tableView setContentOffset:CGPointMake(0, 44)];

只有3行,这个contentOffset无法正常工作,在您的情况下可能会有所需的行为,因为当您有额外的空间可供显示时,您不想隐藏searchBar。

答案 1 :(得分:1)

我想出了自己的解决方案。

我利用UIScrollViewDelegate并提出了UITableView的子类来动态计算contentSize

看一下github repo here

答案 2 :(得分:0)

我会仔细检查表格本身的框架。通过将headerView的框架设置为从0,0开始,您指定它的原点应该位于为表格指定的视图的左上角。