UITableViewの2つのセクション間のスペースを減らす方法はありますか?私が持っているすべてのセクションの間に約15ピクセルがあります。 -tableView:heightForFooterInSection:
と-tableView:heightForHeaderInSection:
についてはすでに0を返そうとしましたが、それでも何も変わりません。
助言がありますか?
少し注意が必要でしたが、次のコードを試してください。
- (CGFloat)tableView:(UITableView*)tableView
heightForHeaderInSection:(NSInteger)section {
if (section == 0) {
return 6.0;
}
return 1.0;
}
- (CGFloat)tableView:(UITableView*)tableView
heightForFooterInSection:(NSInteger)section {
return 5.0;
}
- (UIView*)tableView:(UITableView*)tableView
viewForHeaderInSection:(NSInteger)section {
return [[UIView alloc] initWithFrame:CGRectZero];
}
- (UIView*)tableView:(UITableView*)tableView
viewForFooterInSection:(NSInteger)section {
return [[UIView alloc] initWithFrame:CGRectZero];
}
それに応じて値を変更します。スペースを削除するには、0.0は受け入れられないと思います。最小の健全な値は1.0のようです。
距離を0に縮小したいすべての人のために、あなたは使用しなければなりません:
tableView.sectionHeaderHeight = 0.0;
tableView.sectionFooterHeight = 0.0;
UITableViewDelegateの提供は、ゼロより大きい浮動小数点数から開始する効果のみを行うためです。
-(CGFloat)tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section
{
return 1.0;
}
-(CGFloat)tableView:(UITableView*)tableView heightForFooterInSection:(NSInteger)section
{
return 1.0;
}
-(UIView*)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section
{
return [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
}
-(UIView*)tableView:(UITableView*)tableView viewForFooterInSection:(NSInteger)section
{
return [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
}
(iOS 4.1とXCode 4.0.2を使用)
実際に、Interface Builderの[サイズ]タブでフッター/ヘッダー/セルの高さを設定できます。デフォルトでは、ヘッダー/フッターは10.0に設定されています。
セクションのヘッダー/フッターの高さを減らす必要があります。その後、セクション間のスペースが削減されます。
このコードを試してください
わたしにはできる :-)
tableView.sectionHeaderHeight = 2.0;
tableView.sectionFooterHeight = 2.0;
ストーリーボードからセクションフッターとヘッダーの高さを減らすこともできます。テーブルビュー->サイズインスペクターで。セクションの高さに移動します。
デフォルトでは、プレーンスタイルテーブルでは22、グループ化スタイルテーブルでは10に設定されます。ヘッダーとフッターの値を個別に増減することにより、値を構成できます。
私にとって問題は、グループ化されたテーブルビュースタイル(UITableViewStyleGrouped
)を使用していたためです。プレーンスタイル(UITableViewStylePlain
)に変更したとき、各セクションヘッダーのサイズを決定するのはtableView:heightForHeaderInSection:
メソッドだけでした。
iOS7の更新: ARCの自動リリースの更新により、@ Martin Stolzのコードが編集されました。
-(CGFloat)tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section
{
if(section == 0)
return 6;
return 1.0;
}
-(CGFloat)tableView:(UITableView*)tableView heightForFooterInSection:(NSInteger)section
{
return 5.0;
}
-(UIView*)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section
{
return [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
}
-(UIView*)tableView:(UITableView*)tableView viewForFooterInSection:(NSInteger)section
{
return [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
}
(iOS7、Xcode v5.0を使用)
おそらくこれを使用してください、0は期待どおりに動作しません
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return .leastNormalMagnitude
}
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return .leastNormalMagnitude
}
私にとって、この問題は次のコードを使用するだけで解決しました。
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return section == 0 ? 1 : 20 // 20 is my other sections height
}
最初のセクションで1を返すことで問題が解決しました。