2014-05-15 127 views
1

我遇到了問題UITableView,它的屬性tableHeaderViewUITableView headerView滾動偏移量

我想讓tableHeaderView表現得像UISearchBar一樣,即內容偏移量應該是tableHeaderView的值。 設置contentOffset等沒有幫助,當表視圖不會填充視圖的框架。

這裏的當前行爲的截圖:

current behavior http://tubtub.de/export/now.png

,我想怎麼有:

desired behavior http://tubtub.de/export/desired.png

我插入headerViewviewDidLoad如下:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; 
    headerView.backgroundColor = [UIColor redColor]; 
    self.tableView.tableHeaderView = headerView; 
} 

任何幫助或提示高度讚賞。謝謝!

編輯:我通過利用UIScrollViewDelegate和UITableView的子類化使它工作。檢查它提供的github repo

回答

1

我想出了實施我自己的解決方案。

我利用了UIScrollViewDelegate,並提出了一個UITableView的子類來動態計算contentSize

看看github回購here

0

我會仔細檢查表格框架本身。通過將headerView的框架設置爲從0,0開始,您可以指定它的原點應該在爲表格指定的視圖的左上角。

1

您可以使用setContentOffset:通過headerView高度。 這個contentOffset只有當你有足夠數量的數據關閉你的headerView高度時纔會發生。即如果tableView由於屏幕截圖中只有少量數據而不能滾動,headerView仍然可見。但是,如果您有大量無法在屏幕中顯示的數據,它將擁有contentOffset。

試着用20行。你會明白我的意思。

UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; 
headerView.backgroundColor = [UIColor redColor]; 
self.tableView.tableHeaderView = headerView; 
[self.tableView setContentOffset:CGPointMake(0, 44)]; 

只有3行,這contentOffset將無法正常工作,它可能在你的情況下,可以預期的行爲,因爲你不希望隱藏搜索欄,當你有多餘的空間來顯示。

+0

無論表格顯示多少數據,我都希望始終應用contentOffset。我可能會試圖破解我的方式... – tubtub