2013-08-04 30 views
16

我在構建我的設置屏幕並使用分組表格視圖。 試圖設置標題時,我在標題視圖上方看到間距。 我再次檢查,我確實在-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section中傳遞了正確的視圖高度。iOS7上分組的UITableView的標題視圖高度

下面是此行爲的截圖: enter image description here

你可以看到我在它的標題(振動,靜音模式)的看法,他是黑暗的背景色和它上面的明亮空間。

+0

那麼什麼是你的問題?而這仍然是NDA,你應該在開發者論壇上提問。 – Kevin

+0

如何擺脫我的標題視圖上方的空間。 – Gal

回答

73

經過大量搜索,我終於找到了一個解決方案。 tableview的委託需要實現heightForFooterInSection並返回一個非常小的數字。返回0默認爲導致多餘空格的相同間距。

-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { 
    return CGFLOAT_MIN; 
} 
+1

這個工程,但我寧願返回CGFLOAT_MIN – naudec

+1

是的,行爲是非常不連貫的。所有值都返回正確的高度,但返回0,這會返回默認高度。這沒有記錄,行爲似乎是不連貫的。我爲此打開了一個雷達。 – viggio24

+0

@ viggio24謝謝!請告知我們的進展。 – iGranDav

1

很確定這只是一個簡單的黑客攻擊。但是,一個簡單的方法來做到這一點是寫這個函數:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 
{ 
     return 48.0f; // header height 
} 

來定製它的高度。

很確定還有其他方法可以做到這一點,我不知道。

+3

感謝您的回答。已經實施了這種方法。我返回正確的標題視圖高度,但仍獲得額外的~20像素的距離。 – Gal

5

試試這個:

- (void)viewWillAppear:(BOOL)animated{ 
    CGRect frame = self.tableView.tableHeaderView.frame; 
    frame.size.height = 1; 
    UIView *headerView = [[UIView alloc] initWithFrame:frame]; 
    [self.tableView setTableHeaderView:headerView]; 
} 
+0

感謝您的回覆。我認爲這隻會影響桌面的頂部標題,而我正在討論部分的標題。 – Gal

+0

這實際上是一個合法的解決方案 - 如果存在'tableHeaderView',系統不會爲第一節標題添加額外的空間。就我個人而言,我更喜歡這個技巧來處理頁腳高度。 –

0

看來,蘋果做了一個非常明智的設計決策,使分組表視圖的頂部有額外的空間。嘗試調整UITableView的contentInset。請參閱my answer here

3

這與Casey的回答非常相似,但它更清潔一點,因爲它不需要實施委託方法。當你設置你的表格視圖時,只需將屬性sectionFooterHeight設置爲0即可。它使用較少的代碼完成相同的事情(並且不存在DBL_MIN奇怪)。

tableView.sectionFooterHeight = 0.0;

0

雨燕2.2的版本:

func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { 
    return CGFloat.min 
}