UITableViewのセクションヘッダーのデフォルトの高さ


125

UITableViewの最初のヘッダーの高さを設定します。他のヘッダーについては、デフォルトの高さのままにしておきます。以下のコードで「someDefaultHeight」の代わりにどのような値/定数を設定できますか?

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0)
        return kFirstHeaderHeight;

    return someDefaultHeight;
}

ありがとう


あなたが満足するものになるまで、なぜあなたは異なる値を試してみませんか?
ダニエル

4
@Daniel-Appleがデフォルトの行の高さの値を変更することを決定した場合、アプリがこの値を(任意の量に)ハードコードしないようにする必要があります。どこかで宣言されている場合は、定数からこの情報を引き出すことが最善です。
手綱

回答:


204

IOS 5.0以降では、ほとんどのデリゲートメソッドでUITableViewAutomaticDimensionを返すことができます。ドキュメントページの下部にあります

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if(section == CUSTOM_SECTION)
    {
        return CUSTOM_VALUE;
    }
    return UITableViewAutomaticDimension;
}

1
うーん..私の場合(ハードコードされたconst)UITableViewAutomaticDimensionが返さ-1れ、私のセクションはまったく表示されませんUITableView
スカイワインダー2013

なぜUITableViewAutomaticDimension-1と表示さNSLogれるのですか?
S1U 2013

30
これは、エリアを使用している場合にのみ機能します。メソッドを- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section実装している- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section場合、機能しません。
SuperSaiyen 2013

2
これと見積もりデリゲートメソッドを実装して返すUITableViewAutomaticDimension場合、高さが0になることに注意してください。
Sam Soffes、2015年

4
@SuperSaiyen- viewForHeaderInSection設定するだけで動作しますestimatedSectionHeaderHeight
Robert

48

私のアプリでデフォルトを確認すると、グループ化されたテーブルのデフォルトは高さ22、グループ化されていないテーブルのデフォルトは高さ10のように見えます。

テーブルビューでsectionHeaderHeightプロパティの値を確認すると、それがわかります。


1
ありがとう...これにハードコーディングします。私はこの値の定数があったことを望みますが。
手綱

3
あなたはこれらを後方に持っています。UITableViewStyleGrouped22 UITableViewStylePlain歳で10歳
マイケル・グリニッチ

25

実際にトリックを行います:)

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if(section == 0)
        return kFirstSectionHeaderHeight;
    return [self sectionHeaderHeight];
}

2
私はあなたの意味だと思いreturn [self.tableView sectionHeaderHeight];、いっそのこと、またはreturn [tableView sectionHeaderHeight];。ただし、どちらも私に-1を返します。おそらく、ペン先やストーリーボードを使用していないためです。
jk7 '30年

7

完全を期すために:iOS7以降では、グループ化されたスタイルセクションヘッダーの高さは55.5、最初の38ヘッダーとそれに続くヘッダーの高さです。(DCIntrospectで測定)



2

ここで正しい答えはわかりませんが、iOS 5のグループ化されたテーブルビューの正しい高さは10でも22でもありません。この質問に基づいて44を使用していますが、少なくともおおよそのようです正しい高さ。


2

デフォルトの高さを取得するには、superそれを処理させます。

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0)
        return kFirstHeaderHeight;

    return [super tableView:tableView heightForHeaderInSection:section];
}

[super tableView:tableView heightForHeaderInSection:section];ニブやストーリーボードを使用していないためか、0を返します。
jk7 '30年

1
これは、UITableViewControllerをサブクラス化している場合にのみ機能します。
ウォレス

-1

これでうまくいくはずです

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.section == CUSTOM_SECTION)
    {
        return CUSTOM_VALUE;
    }
    return [tableView rowHeight];
}

私はあなたが意味すると思うreturn [self sectionHeaderHeight];
TMB

@TMB [self sectionHeaderHeight];はエラーを生成します。もしかして[tableView sectionHeaderHeight];
jk7
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.