随着用户拉动,在UITableView中增长标题

时间:2012-09-25 14:40:43

标签: iphone ios uitableview

我正在尝试在UITableView上添加UIView。目的是当用户拉下内容时(通常用于拉动刷新),而不是UITableView的背景显示,表格上方的UIView应该会继续保持卡在顶部向下滑动的UITableViewCell上。当用户以另一种方式滚动(内容上升)时,UIView将会消失,就像它只是顶部的UITableViewCell一样。

你可以在Path中看到这个实现(下拉时间轴和顶部个人资料图片展开,example at 0:15)和新Facebook应用程序的签到(地图越来越高于附近地点列表)。

不确定最佳方式。我认为要达到类似的效果,你必须将UIView作为第一个单元格。但this question让我有点担心在滚动时尝试调整单元格的高度。理论上,调整大小只需要在它们下拉时发生,而不是向上推,如果它只是顶部的UITableViewCell。

编辑:当前代码 - 使用来自rummad的建议我在tableview上添加了一个关键路径观察器,用于contentOffset并根据它调整单元格的高度,但它在各处跳跃。

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
    if (self.tableView == (UITableView*)object) {
        if ([keyPath isEqualToString:@"contentOffset"]) {
            CGPoint scrollLoc = self.tableView.contentOffset;
            if (scrollLoc.y < 0) {
                NSLog(@"offset:%@", NSStringFromCGPoint(scrollLoc));
                headerSize = 100 - scrollLoc.y;
                [self.tableView beginUpdates];
                [self.tableView endUpdates];
            }
        }
    }
}

2 个答案:

答案 0 :(得分:12)

实际上看起来有几个库,并且使用第一个表格单元格不是可行的方法。 “Parallax”似乎是谷歌的神奇术语。

http://rowboatrevolution.com/2012/02/uitableview-parallax-background-a-la-path/ https://github.com/Rheeseyb/RBParallaxTableViewController

答案 1 :(得分:4)

viewDidScroll:委托方法中,跟踪contentOffset的{​​{1}}。然后,您可以相应地设置UITableView的框架。