我正在尝试在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];
}
}
}
}
答案 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
的框架。