web-dev-qa-db-ja.com

UITableViewのセクション間のスペースを減らす

UITableViewの2つのセクション間のスペースを減らす方法はありますか?私が持っているすべてのセクションの間に約15ピクセルがあります。 -tableView:heightForFooterInSection:-tableView:heightForHeaderInSection:についてはすでに0を返そうとしましたが、それでも何も変わりません。

助言がありますか?

137
flohei

少し注意が必要でしたが、次のコードを試してください。

- (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のようです。

259
Tomen

距離を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を使用)

138
Martin Stolz

実際に、Interface Builderの[サイズ]タブでフッター/ヘッダー/セルの高さを設定できます。デフォルトでは、ヘッダー/フッターは10.0に設定されています。

33
Chris

セクションのヘッダー/フッターの高さを減らす必要があります。その後、セクション間のスペースが削減されます。

このコードを試してください

わたしにはできる :-)

tableView.sectionHeaderHeight = 2.0;
tableView.sectionFooterHeight = 2.0;
26
Jirune

ストーリーボードからセクションフッターとヘッダーの高さを減らすこともできます。テーブルビュー->サイズインスペクターで。セクションの高さに移動します。

Size inspector for UITableView in storyboard.

デフォルトでは、プレーンスタイルテーブルでは22、グループ化スタイルテーブルでは10に設定されます。ヘッダーとフッターの値を個別に増減することにより、値を構成できます。

21
iosCurator

私にとって問題は、グループ化されたテーブルビュースタイル(UITableViewStyleGrouped)を使用していたためです。プレーンスタイル(UITableViewStylePlain)に変更したとき、各セクションヘッダーのサイズを決定するのはtableView:heightForHeaderInSection:メソッドだけでした。

6
Liron Yahdav

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を使用)

3
Chisx

おそらくこれを使用してください、0は期待どおりに動作しません

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
     return .leastNormalMagnitude
}

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return .leastNormalMagnitude
}
2
stan

私にとって、この問題は次のコードを使用するだけで解決しました。

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
    return section == 0 ? 1 : 20 // 20 is my other sections height
}

最初のセクションで1を返すことで問題が解決しました。

0
Bharath