web-dev-qa-db-ja.com

ビューをバックに送信

ビューを背面に送信しようとすると、ViewControllerのボタンとラベルの一部が非表示になります。私が後ろに送っているビューはUIImageViewです。何が問題なのか誰かが意見を持っていますか?


これが私が使用しているコードです:

UIImage *image = [UIImage imageNamed: @"background.jpg"];
UIImageView *backImage = [[UIImageView alloc] initWithImage: image];
[self.view addSubview: backImage];
[self.view sendSubviewToBack: backImage];

次に、self.viewにコントロールを追加すると、常に表示されるとは限りません。


コードをinitからloadViewに移動することで、なんとかそれを取得できました。なぜそれが違いを生むのか分かりませんが、ちょっと..うまくいきます!

23
Hans Espen

UIViewsendSubviewToBack:または同様のメッセージを使用している場合は、おそらくUIImageViewの下の階層にボタンが挿入されています。ビューが階層内を移動すると、そのすべてのサブビューも一緒に移動します。

これを修正するには、最初にUIWindowを追加したのと同じビュー(おそらくUIImageView)のサブビューとしてコントロールを追加する必要があります。

コードを見ずに、より正確にすることは非常に困難です。

17
Rog

プログラムで追加してビューを調整する必要がないため、InterfaceBuilderでそれぞれをレイヤー化するのがはるかに簡単になります。画像ビューが背景として設定されている場合は、それが最初にリストされることを確認してください。

1
Jeanine Jue

同意しました。 「後ろに送る」とはどういう意味かよくわかりませんが、推測は次のとおりです...

メインビュー内のレイヤーを調整する場合は、サブビューの数が多いビューを「後ろに」送信しないようにしてください(レイヤーを変更します)。そうしないと、すべてが後ろに移動します(レイヤーは変更)同時に。

これが完全にあなたの意図したものではない場合は、私に知らせてください。この回答を削除します。

0
mmc