簡體   English   中英

如何在UITableView的可視區域上方添加UIView?

[英]How can I add a UIView above viewable area of a UITableView?

我知道有一個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];

由於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];

這里最好的解決方案是將您的視圖添加到標題中,正如您在嘗試時提到的那樣,然后在控制器的viewDidLoad中以編程方式向下滾動tableview,直到隱藏了您想要隱藏的標題視圖。 這可以通過多種不同方式完成。 最簡單的可能是:

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

只需要一個0高的標題視圖,然后將其子視圖定位為負y,以便子視圖的底邊是視圖的頂部。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM