1. ホーム
  2. ios

[解決済み] iOS7でスタイルUITableViewStyleGroupedを持つUITableViewの上部に余分なパディングがあるのはなぜですか?

2022-03-14 03:53:25

質問

iOS7から、私の UITableView のスタイルを持っている UITableViewStyleGrouped .

以下はその例です。

テーブルビューは最初の矢印から始まり、説明のないパディングが35ピクセルあり、その後、緑のヘッダーが UIView で返される viewForHeaderInSection (セクションが 0 の場合)。

この35ピクセルの量はどこから来ているのか、また、どうすれば UITableViewStylePlain ?


アップデート(回答)します。

iOS 11以降では。

tableView.contentInsetAdjustmentBehavior = .never

解決方法は?

当初のバグの原因がわかり、それを紹介するサンプルプロジェクトも作成しました。iOS7のバグだと思います。

iOS7では、GroupedスタイルでUITableViewを作成し、最初のレイアウトにdelegateを設定していない状態で、delegateを設定してreloadDataを呼び出すと、上部に35pxのスペースができ、それが消えることはありません。

このバグを紹介するプロジェクトを作成しましたのでご覧ください。 https://github.com/esilverberg/TableViewDelayedDelegateBug

具体的にはこのファイルです。 https://github.com/esilverberg/TableViewDelayedDelegateBug/blob/master/TableViewDelayedDelegateBug/ViewController.m

24行目がアクティブの場合。

[self performSelector:@selector(updateDelegate) withObject:nil afterDelay:0.0];

の場合、上部に35pxの余分なスペースが生じます。27行目がアクティブで、24行目がコメントアウトされている場合。

self.tableView.delegate = self;

にスペースがない。tableViewがどこかで結果をキャッシュしていて、デリゲートが設定されてreloadDataが呼ばれた後に再描画していないような感じです。