2013-05-06 45 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