5

我目前有一个由 aview controller组成的Navigation bar,然后是一个添加UIView了两个UIButtons作为子视图的 a。然后有一个UITableView从容器底部开始的底部UIView

目前,当用户滚动时,UITableView它会在UIViewand后面UIButtons。我真正想要发生的是UIViewUIButtons与表格视图一起向上移动,但仅通过它们的高度值,在这种情况下为 58 像素。流程应该是这样的...

1) 表格滚动并UIView随之移动前 58 个像素。

2) 用户继续滚动表格,但UIView“大头针”本身在navigation bar.

3)当用户向下滚动表格时,UIView然后将其拾起并拖回视图。我相信新的 Facebook 应用程序在时间轴上做了类似的事情。

我不想将其设置UIViewTableHeaderView表格,因为我还有一个下拉刷新,它位于按钮上方,看起来很糟糕。我试过玩弄桌子contentOffset底层的属性,scrollview但碰上了砖墙。

任何关于从哪里开始的建议将不胜感激。

谢谢

编辑:我更进一步并使用此代码移动 UIView 的框架。

-(void) scrollViewDidScroll:(UIScrollView *)scrollView
{
    NSLog (@"Content Offset: %f", self.tableView.contentOffset.y);
    NSLog (@"Button Frame: %f", self.btnBackground.frame.origin.y);

        if (self.tableView.contentOffset.y > 0)
        {
            CGRect newFrame = self.btnBackground.frame;
            newFrame.origin.x = 0;
            newFrame.origin.y = -self.tableView.contentOffset.y;
            [self.btnBackground setFrame: newFrame];
        }  

}

现在的问题是,如果快速滚动表格视图,scrollViewDidScroll 委托方法不会被足够快地触发。结果是 UIView 在快速滚动时并没有完全回到原来的位置。

4

2 回答 2

1

滚动内容偏移是个好主意。此外,如果您的 tableview 只有一个部分,一种方法是执行表示顶级小部件的自定义标题视图。如果有多个部分,请创建一个额外的空白部分,该部分将返回您的自定义标题。

你可以参考这个堆栈溢出帖子。 自定义 UITableview 标题部分

于 2013-08-11T17:18:59.300 回答
0

好问的问题(y)好吧,对我来说,我首先:使用一个UIScrollView包含你的topView和它下面的tableView并且与你的顶部具有相同宽度UIView并将UITableView其高度设置为height(tableView)+height(顶视图)。第二:因为UITableView是一个子类,UISCrollView您可以使用scrollViewDidScroll委托来了解表格视图是向上还是向下滚动。在这种情况下,您将有两种情况:

1)tableview向上滚动=>你将主scrollView的内容偏移设置为

[scrollView setContentOffset:CGPointMake(0, 58) animated:YES];

2)当表格视图向下滚动时,您可以再次重置内容偏移量

 [scrollView setContentOffset:CGPointMake(0, 0) animated:YES];
于 2013-05-06T10:49:59.900 回答