3

背景画像を表示するに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)];

編集:ビューが表示さsetContentInsetviewDidLoadviewDidAppear:いる場合を除いて、コンテンツのインセットが間違っており、ビューが表示されると所定の位置にスナップされます。行をviewWillAppear:代わりに移動すると、以前と同じように動作します。viewWillAppear:と の間でviewDidAppear:、私が気づいていない奇妙なことが起こっていると思います...

4

1 に答える 1

1

テーブルビューを透明にして、その背後に画像ビューを配置するだけかもしれません。他のビュー (あなたの場合は一番上のバー) を避ける適切な方法は、frame プロパティを設定することです。

于 2012-07-22T05:02:51.087 に答える