設定画面を作成し、グループ化されたテーブルビューを使用しています。ヘッダーを設定しようとすると、ヘッダービューの上に間隔が表示されます。私は再確認し、-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
で正しいビューの高さを渡しました。
この動作のスクリーンショットは次のとおりです。
タイトル(VIBRATE、SILENT MODE)が入った私のビューを見ることができ、bgの色が暗く、その上のスペースが明るくなっています。
多くの検索の後、私はついにこれに対する修正を見つけました。テーブルビューのデリゲートは、heightForFooterInSectionを実装し、非常に小さい数を返す必要があります。 0を返すと、デフォルトで、余分なスペースが発生していたのと同じスペースになります。
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
return CGFLOAT_MIN;
}
これを試して:
- (void)viewWillAppear:(BOOL)animated{
CGRect frame = self.tableView.tableHeaderView.frame;
frame.size.height = 1;
UIView *headerView = [[UIView alloc] initWithFrame:frame];
[self.tableView setTableHeaderView:headerView];
}
これはCaseyの応答とほとんど同じですが、デリゲートメソッドを実装する必要がないため、少しクリーンです。テーブルビューを設定するときは、プロパティsectionFooterHeight
を0に設定するだけです。これにより、少ないコードで同じことが実現されます(DBL_MIN
奇妙さ)。
tableView.sectionFooterHeight = 0.0;
単純なハックであることは間違いありません。しかし、それを行う簡単な方法は、次の関数を作成することです。
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 48.0f; // header height
}
その高さをカスタマイズします。
私が知らない、それを行う他の方法があることはかなり確かです。
Swift 2.2バージョン:
func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return CGFloat.min
}
Appleは、グループ化されたテーブルビューの上部に余分なスペースを設けるという意識的な設計上の決定を下したようです。UITableView
のcontentInsetを調整してみてください。 私の答えはこちら)を参照してください。