2

ストーリーボードの変更によりUITableViewStyleGroupedUITableViewStylePlainプレーンなテーブル ビューの上端がナビゲーション バーに固定されているのに対し、ヘッダー ビューのためにグループ化されたスタイルの上部ギャップが何らかの形であることがわかりました。

ここに画像の説明を入力

しかし、写真が示すように、ギャップ「a」が「b」よりも大きいのはなぜですか? 「a」の周りに隠し要素はありますか?このギャップを管理して、バーにも引っかかるようにするにはどうすればよいですか?

ギャップ「a」と「b」のデフォルトのサイズは? 「設定」のように、「a」と「b」を等しくする方法

ここに画像の説明を入力

以下は私の試しです


以下のように設定heightForHeaderInSection:してみましたviewForHeaderInSection:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 0.0f;
}

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView * header = [[UIView alloc] init];
header.backgroundColor = [UIColor redColor];
[self.view addSubview:header];

return header;
}

ここに画像の説明を入力


試しheightForFooterInSection:てみてviewForFooterInSection:、以下のように

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.0f;
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
UIView * footer = [[UIView alloc] init];
footer.backgroundColor = [UIColor yellowColor];
[self.view addSubview:footer];
return footer;
}

ここに画像の説明を入力


どちらも期待どおりに機能していないように見えます。ギャップ「a」は常にそこにあり、変更されていません。

奇妙なことに、ヘッダーとフッターの高さはまだそこにあり、最小の高さに見えます。

高さをゼロに設定しても。

4

7 に答える 7

1

問題が発生している正確な理由はわかりませんが、グループ化されたテーブルビューをナビゲーション バーの下部に「スタック」させるための回避策:

CGFloat myInset = *HEIGHT OF GAP A*
self.tableView.contentInset = UIEdgeInsetsMake(-myInset, 0, 0, 0);
于 2013-09-24T22:44:44.590 に答える
1

ViewDidLoadこのコードをメソッドに追加するだけです:

self.automaticallyAdjustsScrollViewInsets = NO;
于 2014-01-29T15:36:16.253 に答える
0

まだ興味がある人のために、テーブル ビューの上部にスペースがある理由は、それが TableView の既定のヘッダーであるためです。それを乗り切るには、これをtableViewControllerに追加するだけです

self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableView.bounds.size.width, 0.0f)];

これにより、ビューコントローラーの真下に描画されます。0.0 の値を任意に変更できます。

于 2014-01-03T20:11:15.470 に答える
0

テーブル ビューの heightForFooterInSection API (0.1 など) で最小値 (0 ではない) を返します。これにより、黄色と赤色で示されているように、セクションの下部からデフォルトのスペース (約 10 ピクセル) が削除されます。

于 2014-08-30T15:30:40.133 に答える
0

各セクションの前にヘッダーがあります。各セクションの後にフッターがあります。「a」とマークされているのは、セクション 0 のヘッダーです。「b」とマークされているのは、セクション 0 のフッターとセクション 1 のヘッダーの組み合わせです。

したがって、設定アプリと同じ外観にするために、次のようなコードが必要です。

- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    if (section == 0)
        return 20.0f;
    return 10.0f;
}

- (CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 10.0f;
}

0 を返すと機能しないことに注意してください。テーブルビューがデフォルトの空のヘッダーまたはセクションに戻るという効果があるようです。

于 2013-09-27T16:04:22.053 に答える
0

お役に立てば幸いです。フッターの高さを変更する必要があると思います。

これらの UITableView デリゲート メソッドを実装します。

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{

    return 50.0f;
}

またはこのデリゲートメソッド

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
 - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section

 - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
于 2013-09-24T20:39:53.060 に答える