2013-05-06 47 views
5

我目前有一个0123ar是由Navigation bar,其次是UIView有两个UIButtons添加为子视图。然后在底部有UITableView,从容器底部开始UIView使UIView滚动与UITableView,但销顶部的视图

目前,当用户滚动UITableView时,它会落后于UIViewUIButtons。实际上我想要发生的是UIViewUIButtons随表格视图向上移动,但只有它们的高度值在本例中为58像素。流程将是这样的...

1)表格卷轴和UIView随它移动前58个像素。

2)用户继续滚动表格,但UIView“引脚”本身只是在navigation bar下的视图。

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

我不想将UIView设置为表格的TableHeaderView,因为我也有一个拉到刷新,然后位于按钮上方,看起来很糟糕。我尝试过玩桌子底层scrollviewcontentOffset属性,但碰到一堵砖墙。

任何意见,从哪里开始将不胜感激。

感谢

编辑:我变得有点更进一步,使用此代码来移动的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在快速滚动时并没有完全恢复到原来的位置。

+1

嘿,我现在正试图解决类似的问题。你有没有想过要做什么? @paulmorris – Thomas 2015-05-17 04:59:42

+0

相关问题:http://stackoverflow.com/questions/25374090/move-a-view-when-scrolling-in-uitableview – 2015-08-21 03:35:21

+0

嘿,我也来过类似的情况。设计师希望布局的行为与Android中的CoordinatorLayout完全相同。顺便说一句,你觉得它? – 2016-11-09 10:58:42

回答

0

好问的问题(Y) 好,对我来说我首先:使用包含在它之下既您冠捷和的tableView主UIScrollView,并且具有相同的宽度为您的顶部UIViewUITableView,高度设为是高度(tableView)+高度(topView)。 第二:由于UITableViewUISCrollView的子类,因此您可以使用scrollViewDidScroll委托来了解tableview是向上滚动还是向下滚动。 在此中科院你将有两种情况:

1)的tableview被向上滚动=>设置该内容的主滚动视图的偏移是

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

2)当表视图向下滚动你可以重新设置内容偏移量

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

感谢您的回答,但这并不会自动滚动顶部视图和表格和滚动视图。这一切都需要看起来像UIView是tableView的一部分,并顺利滚动。 – 2013-05-06 11:30:51

0

滚动内容偏移量是一个好主意。另外,如果你的tableview只有一个部分,一种方法是做一个代表顶级部件的自定义头部视图。如果有多个部分创建一个额外的空白部分,它将返回您的自定义标题。

你可以参考这个堆栈溢出帖子。 Customize UITableview Header Section