2015-07-03 130 views
12

我正在嘗試構建類似於Twitter個人資料頁面的頁面。看起來他們正在使用基本的UITableView。頂級配置文件只是tableHeaderView。這些標籤是SectionRowHeader中的一個UISegmentedControl,因此它在滾動時粘到頂部。推文只是該部分內的單元格。如果切換標籤,他們似乎只是更改底層數據並重新加載表格。Twitter iOS個人資料頁面配置

但是,如果你的頁面玩,你會發現,改變標籤會保持以前的滾動位置。如果您滾動到一個選項卡的頂部,那麼當然另一個選項卡必須滾動到頂部,否則將滾動到標題下方。另外,如果仔細觀察,一旦開始滾動,底部部分(推文)就會擁有自己的滾動條。所以它似乎是它自己的tableview。那麼這是主頁面單元格內的一個新的tableview嗎?如果這就是他們正在做的事情,那麼他們之間的滾動是無縫的。您可以將底部向上滾動,並且只有在將標籤固定到頂部時,纔可以在其下面滾動標籤。

我試圖構建一個類似的結構化頁面,但仍然遇到問題。理想情況下,我還希望將這些子選項卡的邏輯分解爲單獨的視圖控制器以供重用,但此時我只想使其工作。

任何人都知道他們用來設置這樣的頁面的結構?

+0

在滾動視圖中滾動視圖?嘗試通過這個http://oleb.net/blog/2014/05/scrollviews-inside-scrollviews/ – rounak

+0

但是滾動視圖不能有一個部分標題,堅持頂部。因此,除非他們手動構建該邏輯,否則它是一個帶有innerscrollview的tableview。但我指出了上述問題(不會無縫滾動等) – Oren

+0

@歐仁你能想出來嗎? – kidsid49

回答

0

我99%肯定,他們只是調整滾動指示插圖爲您滾動查看錶:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    CGFloat const visibleHeaderHeight = 0.0; // your logic here 
    UIEdgeInsets const insets = UIEdgeInsetsMake(visibleHeaderHeight, 0.0, 0.0, 0.0); 

    self.scrollView. scrollIndicatorInsets = insets; 
} 

而且我敢肯定,他們用的是分組樣式表視圖,由於切片,所以你需要自己構建粘性頭。不過,您也可以在-scrollViewDidScroll:中這樣做。


如果你想打破的標籤爲單獨的視圖控制器,我建議以下設置:

  • 有管理包含的標籤
  • 使用UIViewController遏制頭視圖容器視圖控制器插入主動視圖控制器
  • 訂閱活動視圖控制器的滾動視圖的contentOffset並相應地調整滾動指示符插入和粘滯標題y位置
+0

如果他們只是設置插入,但他們如何將滾動和速度從一個滾動視圖傳遞到下一個?嘗試快速滾動頂部標題部分。你會注意到是滾動,然後一旦標籤卡住底部繼續滾動。它的行爲就好像它是單個滾動視圖一樣。 – Oren

+0

它們只有一個滾動視圖,並在滾動事件中重新定位標題以使其看起來很粘。 –

+0

我也嘗試過這種設置,只有一個滾動視圖並用內容插入推送推文的問題在於,標題要麼位於滾動視圖之後(因此不可點擊),要麼位於滾動視圖之上(因此會干擾滾動手勢)。如果它是一個單一的tableview,我不認爲每個單獨的標籤的滾動位置將被保持,所以他們會手動持續該信息?這種方法也會使這個頁面非常複雜,很難維持我的想法。 – Oren

相關問題