5

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

您可以在 Path(下拉时间线和顶部个人资料图片展开,例如 0:15 处)和新 Facebook 应用程序的签入(地图在附近地点列表上方增长)中看到此实现。

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

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

-(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];
            }
        }
    }
}
4

2 回答 2

12

实际上看起来那里有几个库,并且使用第一个表格单元格不是要走的路。“视差”似乎是神奇的谷歌术语。

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

于 2012-09-25T17:11:58.960 回答
4

在您的viewDidScroll:委托方法中跟踪contentOffset您的UITableView. 然后,您可以UIView相应地设置 ' 框架。

于 2012-09-25T14:56:40.413 回答