如何在UITableView的可视区域上方添加UIView?

时间:2011-02-28 23:38:08

标签: iphone ios uitableview sdk

我知道有一个tableHeaderView属性,但是当我将视图添加到该属性时,它不会隐藏在滚动区域上方。

我想拥有的是,当您拉下桌面视图并按住并看到我的UIView进入视图时,我的自定义视图会显示出来。这是在很多应用程序上完成的,用于放置徽标或稍微隐藏,直到用户拉下桌面视图(下拉时Twitter / Facebook)。

我目前正在使用以下内容,而不是将其排除在视图之外:

    UILabel *l = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 300, 20)];
    l.text = @"Hidden Text";
    l.textColor = [UIColor redColor];
    self.tableView.tableHeaderView = l;
    [l release];

4 个答案:

答案 0 :(得分:13)

由于UITableView实际上是一个带有一些额外功能的UIScrollView,因此您可以使用contentInset来获得所需的效果。诀窍是为顶部插图使用负值。这通常会隐藏您的标题视图,但在表格反弹时仍然可以查看。

因此,在将标签添加到标题视图后,只需像这样设置contentInset:


    UILabel *l = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 300, 20)];
    l.text = @"Hidden Text";
    l.textColor = [UIColor redColor];
    self.tableView.tableHeaderView = l;

    //add this
    [self.tableView setContentInset:UIEdgeInsetsMake(-l.bounds.size.height, 0.0f, 0.0f, 0.0f)];

    [l release];

答案 1 :(得分:1)

这里最好的解决方案是将您的视图添加到标题中,正如您在尝试时提到的那样,然后在控制器的viewDidLoad中以编程方式向下滚动tableview,直到隐藏了您想隐藏的标题视图。这可以通过多种不同方式完成。最简单的可能是:

[self.tableView setContentOffset: CGPointMake(0, myHeaderHeight)];

答案 2 :(得分:0)

只需要一个0高的标题视图,然后将其子视图定位为负y,这样子视图的底边就是视图的顶部。

答案 3 :(得分:0)

UIWindow* window = [[UIApplication sharedApplication].delegate.window;
[window addSubview: your-overlayview];