私は10個のセクションがあり、すべてヘッダービューはあるがセルはないテーブルビューを作成しています。つまり、簡単に言うと、私のテーブルビューには10個のヘッダービューのみが表示されます。どのセクションにもセルはありません。これを行うと、セクションのヘッダービューの間にスペースができます。そのスペースを削除したいと思います。それは可能ですか?これを実現するためのヒントや回避策を教えてください。
データソースメソッドは次のとおりです。
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 10;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 0;
}
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UILabel * label = [[UILabel alloc] init];
label.backgroundColor = [UIColor grayColor];
return label;
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 44.0f;
}
これが出力のスクリーンショットです。
私がこのようにやっているのには、少し複雑な理由があります。それは、筆記では説明できないからです。私がやりたいのは、セクションのヘッダービューにスペースがないことです。前もって感謝します。
これを試して..
self.tableView.rowHeight = 0; // in viewdidload
[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]; // in viewdidload
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.01f;
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return <your header height>;
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
return [[UIView alloc] initWithFrame:CGRectZero];
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
return <your header view>;
}
また、なしとしてテーブルセパレーターがあります。
0
でtableView:heightForFooterInSection:
を返すと、デフォルト値が返されます(おそらく10.0)。トリッキーですが、フッターを削除するためにCGFLOAT_MIN
の代わりに0
を使用できます。
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
return CGFLOAT_MIN;
}
更新:
Swift:
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return CGFloat.leastNormalMagnitude
}
次のコードで試してください
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.25; // as for you need
}
デリゲートメソッドに従って管理することもできます
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
上記の2つの方法で管理できる短いです。
グループ化されたスタイルのテーブルビューにはデフォルトのフッターがあります。フッターをカスタマイズして上書きする必要もあります
または
無地のスタイルを試してみてください。
typedef enum {
UITableViewStylePlain,
UITableViewStyleGrouped
} UITableViewStyle;
テーブルビュースタイルをグループ化からプレーンに変更します。これは私の問題を解決しました。
だから私は賛成投票はできませんが、返信を投稿することはできます
実際、この方法に対する正しい答えは
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
return CGFLOAT_MIN;
}
メソッドheightForHeaderInSectionを使用する必要があります。たとえば、異なるセクションに応じて変更することもできます。一部のセクションでは、より多くの距離を表示する必要がある場合があり、一部では、ギャップを表示したくない場合があります。このような場合、0.000001fのCGFLOAT_MINを使用できます。例として、ヘッダーの高さが異なるセクションを使用する方法
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { if (section == 0 || section == 2) { return 55.0; } else { return CGFLOAT_MIN; } }
それがあなたを助けることを願っています。