2013-10-29 62 views
1

我想在我的桌面頂部顯示一個大視圖。這提供了像搜索欄那樣的搜索參數,但是具有更多選項......並因此佔用更多空間。 (假設100個像素)。滾動時收縮的標題視圖

當我把它的滾動的時候,我希望它消失,但只是簡化。 (比方說44個像素)。而不是可編輯的字段,它將成爲搜索的摘要。點擊該摘要將滾動回頂端,再次將搜索視圖展開爲全尺寸。

我該怎麼做?

回答

1

第一步是你的標題不應該是你的UITableView的一部分,但添加在同一級別。

[self.view addSubview:self.tableView]; 
[self.view addSubview:self.myHeaderView]; 

使表仍能正常運行,只是把一個空的頭在相同的尺寸,因爲你需要的視圖的表(tableView.tableHeaderView)。

UIView *emptyHeader = [[UIView alloc] initWithFrame:self.myHeaderView.bounds]; 
self.tableView.tableHeaderView = emptyHeader; 

此外,由於您的自定義標題的行爲是動態的,你是要去必須做出UIView子類,有管理你的頭。

您的UITableViewDelegate是否實施scrollViewDidScroll,並在每次調用時檢查contentOffset。

說你的擴展視圖的身高是100,而44合約時:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    if (scrollView.contentOffset.y > (100 - 44)) { 
     // Contract your header 
     myHeaderView.frame = CGRectMake(0, 0, self.view.frame.size.width, 44); 
     [myHeaderView contract]; // Make it display whatever data you want and setup the touch gesture 
    } 
    else { 
     int offset = scrollView.contentOffset.y; 
     // The reason for the -offset is that you need it to align to the table's real header position, which will be a little off screen 
     myHeaderView.frame = CGRectMake(0, -offset, self.view.frame.size.width, 100); 
     [myHeaderView expand]; 
    } 
} 

希望這有助於:)

+0

確實。我認爲應該這樣做。您對44到100之間的搜索外觀有任何建議嗎?我正在考慮適當縮小100像素圖像,並且從一個到另一個漸變可能是合適的。雖然這可能太昂貴了? –

+0

你可以在那裏有兩個子視圖,一個用於放大版本,另一個用於較小版本,一個淡入淡出另一個,但idk,我不是UX或VD魔術師:) – Ismael

+0

那是一個好的方法。謝謝。 :) –