背景画像を表示するにUITableView
プロパティbackgroundView
が設定された があります。UIImageView
次に、画像の上にいくつかのセルを描画していますが、すべてがうまく機能しています。
今、画面上部にバーを表示しようとしています。バーがテーブル ビューの一番上の行を覆うのを防ぐために、そのcontentInset
プロパティを に設定していますUIEdgeInsetsMake([topBar frame].size.height, 0, 0, 0)
。
問題は、contentInset
表示を変更すると背景画像ビューも押し下げられるため、テーブルの上部に奇妙な白い隙間ができることです。さらに奇妙なことに、テーブルビューをスクロールするとすぐに修正されます。誰が何が起こっているのか知っていますか?
frame
トップバー用のスペースを作るのではなく、テーブルを変更するとcontentInset
、すべて正常に機能しますが、テーブルビューの背景画像も下に移動するため、アプリ内の他のテーブルビューと比較してビューが一貫していないように見えますトップバーがありません。
これは、テーブルのメソッドでテーブルの背景を設定するinit
方法です。
_backgroundImageView = [[UIImageView alloc] initWithFrame:backgroundRect];
[_backgroundImageView setImage:...];
[_backgroundImageView setContentMode:UIViewContentModeBottom];
[self setBackgroundView:_backgroundImageView];
そしてView ControllerのviewDidLoad
[_tableView setContentInset:UIEdgeInsetsMake([_topBarView frame].size.height, 0, 0, 0)];
編集:ビューが表示さsetContentInset
れviewDidLoad
てviewDidAppear:
いる場合を除いて、コンテンツのインセットが間違っており、ビューが表示されると所定の位置にスナップされます。行をviewWillAppear:
代わりに移動すると、以前と同じように動作します。viewWillAppear:
と の間でviewDidAppear:
、私が気づいていない奇妙なことが起こっていると思います...